Mysql
 sql >> Database >  >> RDS >> Mysql

PHP PDO non genera eccezioni sull'inserimento di chiavi duplicate

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;
}