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

标签 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 时将存在错误。

什么情况下需要测试execute是true还是false?

最佳答案

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

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

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

PDO::ERRMODE_EXCEPTION 没用不是默认值,但是,您知道,PHP 有隐藏有用的错误消息的历史,以达到一些被误导的用户友好性。

关于php - 是否需要在 PDO 中测试 execute() 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38327855/

相关文章:

php - 将带有下拉菜单的文本插入数据库

php - PDO PHP MYSQL OOP 建议和操作方法

php - PDO INSERT 语句在计数器循环内不起作用

php - 有没有办法提高 mysqli->prepare 的执行速度?

php - 获取最后修改的目录

php - Guzzle post 请求到自己的服务器导致 `404 Not Found`

MySQL 比较、计数和排序

php - 在 PHP 中查找 json 的深度

php - Codeigniter $this->db->where() 不工作

mysql - 根据分组条件(或类似的东西)重置的按行移动平均值