我想知道如何确切地处理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似乎以一种相当奇怪的方式编程!但是在处理多种数据库类型时,它仍然非常宝贵!