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


Dealing with PDOException's when DB return an Error Statement

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

例如,让我们以 UNIQUE 字段作为研究案例。

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

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

try {
    // PDO::prepare(), PDOStatement::execute e etc.
} catch( PDOException $e ) {
    if( $e -> getCode() == 23000 ) {
        // Do something
    }
}

但我不确定这是否正确,作为程序员思考,这真的是一种好的做法吗?我的意思是,依靠错误代码?

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

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

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

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

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