PDO Получить ошибку из конкретного заявления - PullRequest
0 голосов
/ 31 мая 2018

С doc

Вы должны вызвать PDOStatement :: errorInfo () , чтобы вернуть информацию об ошибке для операции, выполненной для определенного дескриптора оператора.

Хорошо, теперь у меня есть:

    $sth1 = $db_conn->prepare( "SELECT bla" );
    $sth1->execute();

    $sth2 = $db_conn->prepare( "SELECT 1" );
    $sth2->execute();

, а затем $sth2->errorInfo()[2] выдает ошибку: string(71) "ERROR: column "bla" does not exist

Как я понял из цитаты из документации, дляконкретное утверждение $sth2 не должно быть никакой ошибки вообще.Но почему он возвращает ошибку от $sth1?Что я неправильно понял?

PS (в качестве базы данных я использую postgres)

1 Ответ

0 голосов
/ 31 мая 2018

Когда вы запрашиваете у оператора PDO код ошибки, если в операторе есть ошибка, он возвращает этот код ошибки, а если нет, то передает запрос на следующий наивысший уровень (т. Е. Соединение с базой данных).Может даже случиться так, что если вы запросите соединение напрямую, оно вернет то же самое.

В этом случае ошибка не в утверждении - это совершенно допустимое утверждение, которое просто не соответствует текущемуреальность.Рассмотрим другой подготовленный оператор, который добавляет столбец бла, который запускается перед оператором select.

В результате возвращается последняя ошибка соединения с базой данных, он просто возвращается через оператор, который не был оператором, вызвавшимэта проблема.Багги, я тебе разрешаю, но ты спросил "почему".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...