-1

標準の mysql 接続を置き換えるために PDO 接続をセットアップしようとしています。今まで、典型的な mysql_connect、mysql_select_db などのコンストラクタを持つ DB_Class というクラスがあります。

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 に答える