PDO错误:具有多个查询的prepare()在事务内部不起作用

时间:2012-03-08 08:44:05

标签: php transactions pdo

搜索上一个问题的解决方案我遇到了一个奇怪的事实 - 多事件的PDO prepare()在事务中无法正常工作。你没有警告,没有例外,没有 - 只是沉默,没有提交/回滚。

此外,即使除第一个查询之外的某些查询包含错误,您也不会遇到异常。虽然如果第一个查询包含错误,您会得到预期的异常。

如果没有交易,一切正常。

如果你在一个事务中放入几个prepare()语句(每个语句只有一个查询) - 再次,一切正常。

我已经读过MySQL不支持带有多个查询的预处理语句,但问题是默认情况下PDO不处理真正的MySQL预处理语句而只模拟它们。

我花了一整天的时间试图找到一些描述这个问题的文件,但我失败了。

有人知道它是否真的是一个PDO错误?

1 个答案:

答案 0 :(得分:1)

这种行为实际上是某些版本的错误(在PHP 5.4.6-Ubuntu和PHP 5.4.19-Windows上测试过)。

没有(易于查找)有关此问题的文档,唯一的解决方法是使用多个预准备语句。

刚刚报告了错误https://bugs.php.net/bug.php?id=65994