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

PHP PDO kaster ikke undtagelse ved duplikatnøgleindsættelse

Opdatering 2018:DEV'er betragter ikke dette som en fejl, men tilsigtet adfærd. Så PHP-brugere må leve med det. Rapporten er lukket for fremtidige spørgsmål...

Dette er ofte blevet rapporteret som fejl med PDO :https://bugs.php.net/bug.php?id=61613

Det vil kun give en undtagelse, hvis FØRSTE Erklæringen er ugyldig. Hvis den første sætning kører glat, får du ingen fejl - Og din første sætning er gyldig:

INSERT INTO `a` (`b`, `c`) VALUES
  (1, 1),
  (2, 2),
  (3, 2);

som en løsning - eller ifølge bruger slettet den rigtige måde at gøre det på - du skal behandle rækkesættene én efter én (taget fra fejlrapportens kommentarer):

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



  1. Hvorfor er 2 rækker berørt i min `INSERT ... ON DUPLICATE KEY UPDATE`?

  2. Ethvert Javascript/Jquery-bibliotek For at validere SQL-sætning?

  3. Unik begrænsning på kombination af to kolonner?

  4. Hvordan opretter man en database i SQL?