PDO errorCode не работает с подготовкой
$sql = "dSELECT * FROM users";
$dbQuery = $this->dbal->query($sql);
$dbError = $this->dbal->errorInfo();
$dbError получает информацию об синтаксической ошибке.
Если то же самое используется для подготовленного утверждения, оно не возвращает никакой ошибки после подготовки.
Этот код с php.net
<?php
/* Provoke an error -- bogus SQL syntax */
$stmt = $dbh->prepare('bogus sql');
if (!$stmt) {
echo "\nPDO::errorInfo():\n";
print_r($dbh->errorInfo());
}
ErrorInfo не работает таким образом. я использую
$dbQuery = $this->dbal->prequery($sql);
$dbError = $dbQuery->errorInfo(); // $this->dbal->errorInfo(); doesn't work, too.
1 ответ
Решение
В руководстве сказано:
Если сервер базы данных успешно готовит инструкцию, PDO::prepare() возвращает объект PDOStatement. Если сервер базы данных не может успешно подготовить оператор, PDO::prepare() возвращает FALSE или выдает исключение PDOException (в зависимости от обработки ошибок).
Это означает, что у вас нет объекта, когда он выходит из строя: у вас есть логическое значение FALSE
,
Попробуйте изменить обработку ошибок PDO на PDO::ERRMODE_EXCEPTION
,