当DB返回错误语句时处理PDOException

Bru*_*sto 6 php pdo exception unique

我想知道我究竟能如何处理PDO类中可用的DataBase驱动程序返回的错误语句.

例如,让我们将UNIQUE Fields作为研究案例.

您应该知道,至少在PDO的调试模式处于活动状态时,当尝试在数据库的UNIQUE字段中添加重复的内容时,我们会收到PDOException.

我想知道处理这个问题的正确方法是什么.我搜索了它,我得到了这个:

try {

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

} catch( PDOException $e ) {

    if( $e -> getCode() == 23000 ) {
        // Do something
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我不确定它是否正确,并且作为程序员,这真的是一个好习惯吗?我的意思是,依赖于错误代码?

更糟糕的是:PDO接受多个驱动程序,它们共享相同的错误代码?

当然,这不是唯一的情况.还有其他几个错误代码,对吗?这种"技术"可以在所有情况下使用吗?

Dar*_*lus 3

查看http://php.net/manual/en/class.pdoexception.php后,我感觉您可能需要依赖来$e->getMessage()找出错误是什么。

阅读所提供的一篇帖子,您可能需要从消息中提取正确的错误代码。

PDO 似乎是以一种相当奇怪的方式编程的!但在处理多种数据库类型时,它仍然非常有价值!