2014-11-24 39 views
-1

爲什麼不在下面的代碼工作?PHP PDOStatement準備和bindValue方法

$pdo = new PDO('mysql:dbname=_test;host=localhost','root', ''); 
$select=$pdo->prepare("SELECT * FROM test WHERE th=:name"); 
$select->bindValue(":name","1"); 
print_r($select); 

當我打印$選擇它的結果:

PDOStatement Object ([dbh] => PDO Object () [queryString] => SELECT * FROM test WHERE th=:name) 

的感謝!

+0

您不應該用答案的建議修改您的原始代碼,否則將導致答案失效。 – jeroen 2014-11-24 19:30:30

回答

3

您應該爲數據庫調用添加錯誤處理,例如通過設置PDO來引發異常。

您當前的問題是,你實際上並不execute()聲明:

$select->bindValue(":name","1"); 
$select->execute(); 

之後,你將需要從結果集真正看到你的數據庫中的值fetch()結果:

while ($row = $select->fetch()) { 
    // do something with the data 
} 

編輯:要啓用PDO中的異常(您不必趕上它們,系統將拋出未處理的異常錯誤):

$pdo = new PDO('mysql:dbname=_test;host=localhost','root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 
+0

我加了it.it不起作用! – John 2014-11-24 19:31:02

+0

@WEBDESIGNER您是否正在提取行並添加了錯誤處理? – jeroen 2014-11-24 19:37:06