我的代码:错误处理对于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’”错误消息的更多细节?