当前位置:  开发笔记 > 编程语言 > 正文

当PDO :: exec()中的任何语句失败时,有没有办法抛出异常?

如何解决《当PDO::exec()中的任何语句失败时,有没有办法抛出异常?》经验,为你挑选了0个好方法。

PDO :: exec()允许(至少对某些驱动程序,如mysqlnd)一次执行多个语句.

这很好用,当我向PDO::exec()他们传递几个查询时,它们都会被执行:

$pdo->exec('DROP TABLE a; DROP TABLE b;');

我的PDO实例配置为抛出异常:

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

如果第一个查询失败,则会按预期引发异常:

$pdo->exec('DROP TABLE does_not_exist; DROP TABLE ok;'); // PDOException

但是当任何后续查询失败时,它会默默地忽略这个事实而你似乎没有办法知道它:

$pdo->exec('DROP TABLE ok; DROP TABLE does_not_exist;'); // no exception
var_export($pdo->errorInfo()); // array (0 => '00000', 1 => NULL, 2 => NULL)

有没有办法配置PDO,以便exec()任何语句失败时抛出异常?

请注意,我目前没有明显更好的选择在自己的exec()调用中运行每个查询,因为我正在编写一个读取SQL转储文件的工具.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有