Актуализация 2018 г.:Разработчиците не смятат това за грешка, а за планирано поведение. Така че, потребителите на PHP трябва да живеят с това, докладът е затворен за всякакви бъдещи въпроси...
Това често се съобщава като грешка с PDO
:https://bugs.php.net/bug.php?id=61613
Ще хвърли изключение само ако ПЪРВИ Изявлението е невалидно. Ако първото изявление работи гладко, няма да получите грешка - И първото ви изявление е валидно:
INSERT INTO `a` (`b`, `c`) VALUES
(1, 1),
(2, 2),
(3, 2);
като заобиколно решение - или според потребител изтрит правилният начин да го направите - трябва да обработите наборите от редове един по един (взето от коментарите на докладите за грешки):
$pdo->beginTransaction();
try {
$statement = $pdo->prepare($sql);
$statement->execute();
while ($statement->nextRowset()) {/* https://bugs.php.net/bug.php?id=61613 */};
$pdo->commit();
} catch (\PDOException $e) {
$pdo->rollBack();
throw $e;
}