Php 处理PDO异常';s当DB返回错误语句时

Php 处理PDO异常';s当DB返回错误语句时,php,exception,pdo,unique,Php,Exception,Pdo,Unique,我想知道如何准确地处理PDO类中可用的数据库驱动程序返回的错误语句 例如,让我们以独特的字段作为研究案例 您应该知道,至少当PDO的调试模式处于活动状态时,当尝试在数据库的唯一字段中添加重复的内容时,我们会收到一个PDO异常 我想知道正确的处理方法是什么。我搜索了一下,得到了这个: try { // PDO::prepare(), PDOStatement::execute e etc. } catch( PDOException $e ) { if( $e -> g

我想知道如何准确地处理PDO类中可用的数据库驱动程序返回的错误语句

例如,让我们以独特的字段作为研究案例

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

我想知道正确的处理方法是什么。我搜索了一下,得到了这个:

try {

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

} catch( PDOException $e ) {

    if( $e -> getCode() == 23000 ) {
        // Do something
    }
}
但我不确定它是否正确,作为程序员,这真的是一个好的实践吗?我是说,依赖错误代码

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

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

看了之后,我觉得您可能需要依靠
$e->getMessage()
来找出错误所在

阅读其中一篇文章时,您可能需要从消息中提取正确的错误代码


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

我认为更安全的做法是查询现有的结果,然后检查它是否存在。