Mysql
 sql >> Datenbank >  >> RDS >> Mysql

auf doppelten Eintrag prüfen vs PDO errorInfo-Ergebnis verwenden

Sie könnten dies mit einem Try-Catch-Block ausführen:

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

Sie könnten auch nach Alternativen wie "INSERT IGNORE" und "INSERT... ON DUPLICATE KEY UPDATE" suchen - obwohl ich denke, dass diese MySQL-spezifisch sind und gegen die Portabilität der Verwendung von PDO verstoßen würden, wenn Sie sich darüber Sorgen machen .

Bearbeiten:Um Ihre Frage förmlicher zu beantworten, beseitigt Lösung Nr. 1 (der defensive Programmierer) bei voller Nutzung den Punkt der eindeutigen Einschränkung von vornherein. Daher würde ich Ihrem Gedanken zustimmen, MySQL die Datenüberprüfung übernehmen zu lassen.