PDO :: exec异常处理出错

时间:2015-08-11 09:47:36

标签: php pdo exception-handling

我对PDO :: exec的异常处理有一个问题。在以下示例中,我有一个现有的PDO连接,并且想要执行sql语句。到目前为止,这种方法效果很好,但如果我移交一个错误的查询,它就不起作用。在这种情况下,我希望它处理指定的异常,但程序停止时会发生致命错误,而不会执行异常块。 以下是错误的代码段:

try{
   $connection->exec( $query );
} catch( PDOException $err ) {
   echo "caught\n";
   echo $err->getMessage();
}

这导致错误Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax;并且程序中止。

我也尝试过:

if( $connnection->exec( $query ) === false ) {
   echo "Failure\n";
} else {
   echo "Success\n";
}

遗憾的是同样不成功。这里有什么问题?是否有任何最佳实践例子(到目前为止我还没有找到)?

1 个答案:

答案 0 :(得分:0)

这个未被捕获的异常很可能是它的命名空间或xdebug的责任。

  

是否有最佳实践示例

不确定。
不要使用exec()。
不要将您的查询包装在try-catch中,除非您只在包装器中执行一次并重新抛出它。

  

程序中止。

完全当遇到错误查询时,一个好的程序应该做什么。