Atualização 2018:DEVs não consideram isso um bug, mas um comportamento pretendido.
Isso tem sido frequentemente relatado como bug com
PDO
:https://bugs.php.net/bug.php?id=61613 Ele só lançará uma exceção se o PRIMEIRO A declaração é inválida. Se a primeira instrução funcionar sem problemas, você não receberá nenhum erro - E sua primeira instrução é válida:
INSERT INTO `a` (`b`, `c`) VALUES
(1, 1),
(2, 2),
(3, 2);
como solução alternativa - ou de acordo com usuário excluído a maneira certa de fazer isso - você precisa processar os conjuntos de linhas um por um (retirado dos comentários dos relatórios de bugs):
$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;
}