PHP OOP 数据库连接

标签 php mysql database class oop

我刚刚开始学习面向对象编程的概念,并且我已经用函数编写了这个类。

它工作正常,但我想知道我是否正确地完成了此操作...

这是我的代码:

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 循环,然后显示您的数据。以这种方式执行数据库类还将确保不会同时打开多个数据库连接!请注意,此代码仅供您引用,在生产或任何实际使用前应进行测试。

配置.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');
    }
?>

数据库类.php:

<?php
    class database
    {
        function __construct($pdo)
        {
            $this->pdo = $pdo;
        }

        function getData()
        {
            $query = $this->pdo->prepare('SELECT * FROM database');
            $query->execute();
            return $query->fetchAll();
        }
    }
?>

索引.php:

<?php
    require_once 'config.php';
    require_once 'database.class.php';
    $db = new database($pdo);
    $rows = $db->getData();
?>

关于PHP OOP 数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20732897/

相关文章:

php - 如何按用户选择的值过滤帖子?

php - 从 Woocommerce 中的子产品类别 ID 获取父产品类别 ID

php表单mysql更新保存数据

php - 在 php 中连接到数据库的最佳方法是什么?

php - 使用时间戳在 mysqli 中创建表

javascript - 将信息从数据库加载到 Javascript 游戏中

PHPExcel:如何检查 save() 是否成功?

php - 使用刷新按钮刷新验证码

Mysql查询将 "EXPIRED"插入到wordpress标题中

mysql - PhpMyAdmin 数据库导出。