Работа с PDOException, когда БД возвращает сообщение об ошибке - PullRequest
6 голосов
/ 14 мая 2011

Я хотел бы знать, как именно я могу справиться с утверждениями об ошибке, возвращаемыми драйверами базы данных, доступными в классе PDO.

В качестве примера возьмем УНИКАЛЬНЫЕ Поля в качестве учебного примера.

Как вы должны знать, по крайней мере, когда активен режим отладки PDO, при попытке добавить что-то дублированное в поле UNIQUE базы данных мы получаем исключение PDOException.

И я хотел бы знать, как правильно справиться с этим. Я искал об этом, и у меня есть это:

try {

    // PDO::prepare(), PDOStatement::execute e etc.

} catch( PDOException $e ) {

    if( $e -> getCode() == 23000 ) {
        // Do something
    }
}

Но я не уверен, что это правильно, и, думая как программист, это действительно хорошая практика? Я имею в виду, полагаться на код ошибки?

Еще хуже: PDO принимает несколько драйверов, все они имеют один и тот же код ошибки?

Конечно, это не единственный случай. Есть несколько других кодов ошибок, верно? Эту «технику» можно использовать при любых обстоятельствах?

1 Ответ

3 голосов
/ 14 мая 2011

После просмотра http://php.net/manual/en/class.pdoexception.php, у меня возникает ощущение, что вам, возможно, придется положиться на $e->getMessage(), чтобы узнать, в чем заключалась ошибка.

Прочитав одно из сообщений при условии , вам может понадобиться извлечь правильный код ошибки из сообщения.

Кажется, PDO был запрограммирован довольно странно! Но при работе с несколькими типами баз данных это все еще бесценно!

...