-1

我正在尝试设置 PDO 连接来替换我的标准 mysql 连接。到目前为止,我有一个名为 DB_Class 的类,它的构造函数中有典型的 mysql_connect、mysql_select_db... 的东西。

我通过在每个将命中数据库的对象的构造函数中创建一个新的 DB_Class 实例来使用它。我在某处在线获得了示例,它似乎有效。

现在我想切换到 PDO,我在这里尝试相同的逻辑,但它没有像我希望的那样工作。这就是我所拥有的。

class DB_Class {
    function __construct() {
        //$connection = mysql_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD) or
        //        die('Oops connection error -> ' . mysql_error());
        //mysql_select_db(DB_DATABASE, $connection) or die('Database error -> ' . mysql_error());

        $dbConnString = "mysql:host=" . DB_SERVER . ";port=".DB_PORT." dbname=" . DB_DATABASE;
        $dbConnection = new PDO($dbConnString, DB_USERNAME, DB_PASSWORD);
        //$dbConnection = new PDO('mysql:dbname='.DB_DATABASE.';host='.DB_SERVER.';charset=utf8', DB_USERNAME, DB_PASSWORD);
        $dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
        $dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
}

这是我的客户类的构造函数

//Initialize the DB Class 
    public function __construct() {
        $db = new DB_Class();
    }

这是我不太确定如何使用它的地方?

public function FindByOwnerID($id) {
        $clients = array();       

        $stmt = $db->prepare("SELECT * FROM Client WHERE OwnerID = :id");
        $stmt->execute(array(':id' => $id));          
4

1 回答 1

1

构造函数应该是

$this->db = new DB_Class();
^^^^^^^^^

$db本身只是该方法中的一个局部变量。您需要将其分配为对象属性,即$this->whatever.

在其他方法中使用的任何地方$db都是如此,它应该始终是$this->db.

于 2013-05-07T17:55:46.633 回答