我的代碼:錯誤處理對於PDO :: ATTR_EMULATE_PREPARES =>假
$st = $conn->prepare('abc');
echo "emulate is : " . $st->getAttribute(PDO::ATTR_EMULATE_PREPARES) . "<br />";
$sql = "SELECT count(*) FROM traceuser WHERE username=? ORDER BY gg DESC";
$q = $conn->prepare($sql);
$result = $q->execute(array("zac1987"));
$number_of_rows = $q->fetchColumn();
if($result){
echo "sql query successful";
}else{
echo "sql query fail. ";
print_r ($q->errorInfo()) ;
}
輸出如果PDO::ATTR_EMULATE_PREPARES => true
:
仿真是:1個
SQL查詢失敗。陣列([0] => 00000 [1] => 1054 [2] =>未知列在 'order子句' 'GG')
如果PDO::ATTR_EMULATE_PREPARES => false
輸出:
致命錯誤:調用一個成員函數getAttribute()在非對象上在/home/aekcom/public_html/test-countResult-fakePS.php上行33
致命錯誤:調用一個成員函數execute()第41行的/home/aekcom/public_html/test-countResult-fakePS.php
問題:
爲什麼getAttribute()不工作如果PDO::ATTR_EMULATE_PREPARES => false
?我如何檢查模擬的價值?或者如何讓它顯示「模擬是:0」?
如何使PDO::ATTR_EMULATE_PREPARES => false
顯示等代替「功能的execute()一個非對象的」「未知列‘GG’」錯誤消息的更多細節?