PDO не показывает предупреждение неверному хосту - PullRequest
0 голосов
/ 05 января 2019

Недавно я пропустил синтаксис PDO, и мне потребовалось несколько часов, чтобы выяснить, в чем была ошибка. Об ошибке не было сообщено на странице. Это было не из-за улова.

Как я могу показать ошибку в этих случаях?

Я использовал

new PDO ("mysql:localhost; dbname=crud", "root", "");

Когда правильный был

new PDO ("mysql:host=localhost; dbname=crud", "root", "");

Да, у меня есть

ini_set ('error_reporting', E_ALL);
ini_set ('display_errors', 1);

активировано и условие

try {} catch (PDOException $ e) {}

и даже тогда ошибка не отображается.

1 Ответ

0 голосов
/ 05 января 2019

PDO имеет режим по умолчанию без звука (PDO::ERRMODE_SILENT). Это означает, что он не будет генерировать исключение при плохом соединении. Так что вам нужно установить его атрибутный режим для выдачи исключения:

try {

    $dbh = new PDO ("mysql:localhost; dbname=crud", "root", "");
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch (PDOException $e) {

    echo 'Bad Connection. Error: ' . $e->getMessage();

}

подробнее здесь: http://php.net/manual/en/pdo.error-handling.php

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