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

Som*_*ial 3 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. 
Run Code Online (Sandbox Code Playgroud)

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

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

Álv*_*lez 7

这取决于PDO::ATTR_ERRMODE,如解释的错误和错误处理章节.

如果将PDO配置为抛出异常(PDO::ERRMODE_EXCEPTION),则抛出异常,PDO将在出错时自动抛出异常.

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

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