内容简介:翻译自:https://stackoverflow.com/questions/20732897/php-oop-database-connect
我刚刚开始学习面向对象编程的概念,并且我已经用函数编写了这个类.
它工作正常,但我很想知道我是否正确地做到了这一点……
这是我的代码:
class Database{ const DB_HOSTNAME = 'localhost'; const DB_USERNAME = 'root'; const DB_PASSWORD = 'password'; const DB_NAME = 'shop'; protected $_db_connect; protected $_sql; protected $_result; protected $_row; function db_connect(){ $this->_db_connect = mysql_connect(self::DB_HOSTNAME,self::DB_USERNAME,self::DB_PASSWORD) or die(mysql_error()); } function slect_db(){ mysql_select_db(self::DB_NAME) or die(mysql_error()); } function sql(){ $this->_sql = 'SELECT * FROM users'; } function query(){ $this->_result = mysql_query($this->_sql); } function fetch_array(){ while($this->_row = mysql_fetch_array($this->_result)){ $username = $this->_row['user_USERNAME']; echo "<ul>"; echo "<li>".$username."</li>"; echo "</ul>"; } } function db_close(){ mysql_close($this->_db_connect); } } $database = new Database(); $database->db_connect(); $database->slect_db(); $database->sql(); $database->query(); $database->fetch_array(); $database->db_close();
请使用PDO或MySQLi,因为它更安全,并且如上所述不推荐使用mysql_ *函数,我提供了一些使用PDO的通用代码来帮助您进行新的冒险.正如评论中所述,如果你正在寻找一个面向对象的设计,你真的不应该回应数据,你应该做的是在你进行查询之后,返回你提取的行并从那里使用一些东西比如foreach循环然后显示你的数据.以这种方式执行数据库类还将确保不会立即打开多个数据库连接!请注意,此代码仅供您参考,应在生产中使用之前进行测试或任何实时测试.
config.php文件:
<?php //Enter your database connection details here. $host = 'localhost'; //HOST NAME. $db_name = 'databasename'; //Database Name $db_username = 'root'; //Database Username $db_password = ''; //Database Password try { $pdo = new PDO('mysql:host='. $host .';dbname='.$db_name, $db_username, $db_password); } catch (PDOException $e) { exit('Error Connecting To DataBase'); } ?>
database.class.php:
<?php class database { function __construct($pdo) { $this->pdo = $pdo; } function getData() { $query = $this->pdo->prepare('SELECT * FROM database'); $query->execute(); return $query->fetchAll(); } } ?>
index.php文件:
<?php require_once 'config.php'; require_once 'database.class.php'; $db = new database($pdo); $rows = $db->getData(); ?>
翻译自:https://stackoverflow.com/questions/20732897/php-oop-database-connect
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽
- 数据库连接池
- 数据库连接池设置
- 怎样获知数据库的连接属性?
- 怎样获知数据库的连接属性?
- Laravel 使用多个数据库连接
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。