Поиск решения моего предыдущего вопроса Я столкнулся с странным фактом – PDO prepare () с несколькими запросами не работает правильно внутри транзакции. Вы не получаете никаких предупреждений, никаких исключений, ничего – просто молчания и не совершаете / откатываете.
Кроме того, вы не получаете исключения, даже если некоторые из запросов, кроме первого, содержат ошибки. Хотя если первый запрос содержит ошибку, вы получаете исключение, как ожидалось.
Если транзакций нет, все работает нормально.
Если вы помещаете несколько инструкций prepare () (с одним запросом каждый) внутри одной транзакции – снова все работает правильно.
Я читал, что MySQL не поддерживает подготовленные операторы с несколькими запросами, но дело в том, что PDO по умолчанию не имеет дело с реальными подготовленными операциями MySQL и только имитирует их.
Я целый день пытался найти документ, описывающий эту проблему, но я потерпел неудачу.
Кто-нибудь знает, действительно ли это ошибка PDO?
Такое поведение на самом деле является ошибкой некоторых версий (проверено на PHP 5.4.6-Ubuntu и PHP 5.4.19-Windows).
Нет никакой (простой для поиска) документации по этой проблеме, единственным обходным решением является использование нескольких подготовленных операторов.
Только что сообщили об ошибке https://bugs.php.net/bug.php?id=65994