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

mysqli einfügen - aber nur wenn kein Duplikat

Erwägen Sie, einen unique einzufügen Index für diese bestimmte Tabelle. Der folgende Code fügt den Index hinzu und entfernt alle aktuellen Duplikate:

ALTER IGNORE TABLE `RegisteredUsersTable` ADD UNIQUE INDEX unique_email (`UserEmail`);

Sobald dies hinzugefügt wurde, verwenden Sie INSERT IGNORE oder INSERT...ON DUPLICATE KEY UPDATE . Sie führen die Einfügung nur durch, wenn keine Duplikate vorhanden sind.

$mysqli->query("INSERT IGNORE INTO RegisteredUsersTable (UserName, UserEmail) VALUES ('".$newUserName."', '".$newUserEmail."')");

MySQL gibt einen Fehler aus, da sich die E-Mail bereits in der Datenbank befindet. Der IGNORE-Befehl weist das Skript jedoch an, Fehler für diese Abfrage nicht zu beachten, da Sie in diesem Fall eine doppelte Zeile erwarten.

Außerdem gibt es eine Möglichkeit, Ihren Benutzer mit einer Fehler- oder Erfolgsmeldung zu benachrichtigen, sogar mit INSERT IGNORE . Verwenden Sie MYSQL LAST_INSERT_ID() . Wenn eine ID angegeben wurde, wurde sie eingefügt. Wenn nicht, dann war die E-Mail schon da (oder es gab einen anderen Fehler).