Мои коды:
$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-запрос не выполнен. Array ([0] => 00000 [1] => 1054 [2] => Неизвестный столбец «gg» в «предложении заказа»)
Вывод, если PDO::ATTR_EMULATE_PREPARES => false
:
Неустранимая ошибка: вызов функции-члена getAttribute () для необъекта в /home/aekcom/public_html/test-countResult-fakePS.php в строке 33
Неустранимая ошибка: вызов функции-члена execute () для необъекта в /home/aekcom/public_html/test-countResult-fakePS.php в строке 41
Вопрос:
Почему getAttribute () не работает, если PDO::ATTR_EMULATE_PREPARES => false
? Как проверить значение эмуляции? Или как сделать так, чтобы "emulate is: 0"?
Как сделать так, чтобы PDO::ATTR_EMULATE_PREPARES => false
показывал более подробную информацию об ошибке, например " Неизвестный столбец 'gg' " вместо " function execute () для необъекта "?