Aggiornamento 2018:i DEV non lo considerano un bug, ma un comportamento previsto. Quindi, gli utenti PHP devono conviverci, il rapporto è chiuso per qualsiasi domanda futura...
Questo è stato spesso segnalato come bug con PDO
:https://bugs.php.net/bug.php?id=61613
Verrà generata un'eccezione solo se FIRST La dichiarazione non è valida. Se la prima istruzione funziona senza problemi, non riceverai alcun errore - E la tua prima affermazione è valida:
INSERT INTO `a` (`b`, `c`) VALUES
(1, 1),
(2, 2),
(3, 2);
come soluzione alternativa o in base a utente eliminato il modo giusto per farlo - devi elaborare i set di righe uno per uno (tratto dai commenti delle segnalazioni di bug):
$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;
}