Overvej at sætte en unique
indeks på denne særlige tabel. Følgende kode tilføjer indekset og fjerner alle aktuelle dubletter:
ALTER IGNORE TABLE `RegisteredUsersTable` ADD UNIQUE INDEX unique_email (`UserEmail`);
Når dette er tilføjet, skal du bruge INSERT IGNORE
eller INSERT...ON DUPLICATE KEY UPDATE
. De vil kun præforme indsættelsen, hvis der ikke er nogen dubletter.
$mysqli->query("INSERT IGNORE INTO RegisteredUsersTable (UserName, UserEmail) VALUES ('".$newUserName."', '".$newUserEmail."')");
Mysql vil give en fejl, fordi e-mailen allerede er i databasen. IGNORE-kommandoen fortæller dog, at scriptet ikke skal være opmærksom på fejl for denne forespørgsel, fordi du i dette tilfælde forventer, at det er en dubletrække.
Der er også en måde at advare din bruger med en fejl- eller succesmeddelelse, selv med INSERT IGNORE
. Brug MYSQL LAST_INSERT_ID()
. Hvis der blev givet et ID, blev det indsat. Hvis ikke, så var e-mailen der allerede (eller der var en anden fejl).