是否需要在PDO中测试execute()结果?

时间:2016-07-12 11:38:49

标签: php mysql pdo

我通常使用以下语句进行pdo MySQL查询

$query = $db->prepare('MySQL statement');
$result = $query->execute(array())

Then use $query->fetch or fetchcolumn (to check Count(*)) to fetch data. 

我的问题是 - 是否需要测试$ result是否真实?在生产环境中,如果MySQL已关闭,则在我们声明新PDO时将存在错误。

在什么情况下我需要测试执行是真还是假?

2 个答案:

答案 0 :(得分:7)

取决于PDO::ATTR_ERRMODE,如Errors and error handling章节所述。

如果您将PDO配置为抛出异常(PDO::ERRMODE_EXCEPTION),那么不会,PDO会在出错时自动抛出异常。

在任何其他情况下(使用默认的PDO连接选项或明确设置PDO::ERRMODE_SILENTPDO::ERRMODE_WARNING)然后是,您需要手动验证每个操作的成功。

PDO::ERRMODE_EXCEPTION不是默认值是没有用的,但是,您知道,PHP有一些隐藏有用的错误消息的历史记录,因为这些错误的用户友好性。

答案 1 :(得分:0)

如果要检查传递的查询是否最常见。

如果$result为false,则表示查询未通过,$query中有错误,以后您可能需要查看。

您可以创建一些登录信息,检查$result是否为false并抛出一些准备好的异常,或者用它构建您的应用程序。

基本上如果$result为false,您可以为它创建一些自定义逻辑。