2009-12-10 58 views
0

我有以下「飛行測試課」: http://sumoin.pastebin.com/ff744ea4 沒有微調或別的東西,只是一個簡短的測試pdo類。PDO和PDOStatement,神奇的作業

和我有test.php的: http://sumoin.pastebin.com/d70dcb4ec

有趣的是:

的PDOStatement對象對象從不直接返回,我又把它永遠不會被分配給$this->handler->stmt

但執行$stmt->execute()就像一切都好的一樣好。 但是,如果使用$this->handler->stmt->someMethod我收到以下錯誤:

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

(bindParam只是一個例子)

我已經檢查了查詢,它在它沒有錯誤,我試圖用「bindValue ()「, 不工作。 我試圖用整數而不是':name'來給參數賦值。 我通過$this->handler->query()運行純查詢,它工作。

問題在哪裏? 當我調用「 - > prepare()」方法時,我不想在運行時分配我的PDOStatement對象,我希望它成爲類的一部分。

任何想法? 如果在那裏有重複,請不要打我,但我沒有找到任何幫助我的東西。

Information:

  • PHP5.2
  • PDO Extensions etc. installed
  • Apache2
  • MySQL5.1 (matching to the PDO version)
+0

更新:我試圖用一個參考 '$這 - >語句=&$這 - > handler->製備()'。 仍會導致相同的錯誤。 – 2009-12-10 18:08:28

回答

0

解決方法/解決方案:

public function prepare($query) 
{ 
    return $this->handler->prepare($query); 

    //$stmt->setFetchMode(PDO::FETCH_ASSOC); // standard 
    //return $this->stmt; 
} 

public function getStatement($query) 
{ 
    $this->stmt = $this->prepare($query); 
} 
+0

然而,這種方法很有效,我不知道爲什麼,但是在坐在梳妝檯上的大腦後,我有了這個想法;) – 2009-12-10 19:14:41