Как получить подробную информацию об ошибке PDO?

Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]:
Invalid parameter number: parameter was not defined' in (строка 118) Stack trace: #0
PDOStatement->execute() #1 {main} thrown in

Строка 118 это $b->execute(); В целом понятно что он говорит что неверное количество параметров и какой-то не определён, но как-то можно заставить его показать какой именно?
Пробовал ставить:
echo $pdo->errorCode();
print_r($pdo->errorInfo());

Но он мне что-то ничего вообще не показывает.
  • Вопрос задан
  • 1935 просмотров
Решения вопроса 2
@bIbI4k0
Питоню
Перехватывайте исключение PDOException, в нем "зашита" более подробная инфа по ошибке. Плюс, в блоке catch вы можете обработать объект запроса PDOStatement, из которого можно вытянуть данные методом debugDumpParams(). Например:

try {
  $stmt->execute($sq);
} catch (PDOException $e) {
  print_r($e->getMessage());
  $stmt->debugDumpParams();
}


php.net/manual/ru/class.pdostatement.php
php.net/manual/ru/class.pdoexception.php
Ответ написан
27cm
@27cm
TODO: Написать статус
Никак. Что разработчики посчитали нужным засунуть в исключение, то и имеем. Если уж сильно хочется, пишите свою обертку над PDO, и сами формируйте сообщение об ошибке. Ну совсем серьёзный вариант: написать pull request.

А вообще исключения не для отладки придумали.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы