php
  • mysql
  • pdo
  • 2013-05-01 69 views 0 likes 
    0

    我有下面的連接代碼:調用成員函數的非對象在準備(),甚至有PDO對象

    $this->connection->prepare("CALL CreateRecord('testingRecord')") 
    

    它給了我下面的錯誤:

    $this->connectionString = 'mysql:host=' . db_config_DBConfig::$MySQLserverName . ';dbname=' . db_config_DBConfig::$MySQLdbName . ';port=' . db_config_DBConfig::$MySQLport .';connect_timeout=15'; 
        $this->connection = new PDO($this->connectionString, db_config_DBConfig::$MySQLuserName, db_config_DBConfig::$MySQLpassCode); 
        $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    

    這樣做後:

    Fatal error: Call to a member function prepare() on a non-object in 
    

    當我打印使用的var_dump的對象時,它給了我這樣的:

    object(db_mysql_DBConnect)#1 (3) { ["connectionString":"db_mysql_DBConnect":private]=> string(70) "mysql:host=localhost;dbname=testingrecord;port=3306;connect_timeout=15" ["connection"]=> object(PDO)#2 (0) { } ["assocData":"db_mysql_DBConnect":private]=> array(0) { } } 
    

    我不知道我在這裏錯過了什麼。任何幫助將不勝感激...

    +0

    括號之間的內容是什麼?什麼是'$ this'? – Neal 2013-05-01 21:40:16

    +0

    Btw'db_config_DBConfig'似乎不是一個合適的類名;) – hek2mgl 2013-05-01 23:10:43

    +0

    你怎麼得到'$ this-> connection = new PDO',但是轉儲表示'db_mysql_DBConnect'? – 2013-05-02 14:29:24

    回答

    0

    我猜PDO構造函數因連接憑證錯誤而失敗。如果連接失敗,將ERRMODE_EXCEPTION直接傳遞給構造函數以使連接觸發異常:

    $this->connection = new PDO(
        $this->connectionString, 
        db_config_DBConfig::$MySQLuserName, 
        db_config_DBConfig::$MySQLpassCode, 
        array (
         PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION 
        ) 
    ); 
    
    +1

    我非常懷疑它是否在構造函數沒有失敗後立即調用'$ this-> connection-> setAttribute'。 OP表示,直到他稱之爲「準備」時纔會失敗。我在想可能缺少干涉線。 – Adrian 2013-05-02 14:09:51

    相關問題