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

tjek for duplikatindtastning vs brug PDO errorInfo resultat

Du kan udføre dette med en try catch-blok:

try {
   $prep->execute($values);
   // do other things if successfully inserted
} catch (PDOException $e) {
   if ($e->errorInfo[1] == 1062) {
      // duplicate entry, do something else
   } else {
      // an error other than duplicate entry occurred
   }
}

Du kan også undersøge alternativer såsom "INSERT IGNORE" og "INSERT... ON DUPLICATE KEY UPDATE" - selvom jeg tror, ​​de er MySQL-specifikke og ville gå imod portabiliteten ved at bruge PDO, hvis det er noget, du er bekymret over. .

Edit:For mere formelt at besvare dit spørgsmål, for mig, eliminerer løsning #1 (den defensive programmør) i fuld brug effektivt pointen med den unikke begrænsning i første omgang. Så jeg er enig i din tanke om at lade MySQL tage sig af datatjek.



  1. Mysql:Udfør af IKKE EKSISTERER. Er det muligt at forbedre ydeevnen?

  2. Script hele databasen SQL-Server

  3. Låser borde op, hvis tråden går tabt

  4. Sådan bruger du MySql og Entity Framework 4.1-koden først