Zvažte vložení unique
index na této konkrétní tabulce. Následující kód přidá index a odstraní všechny aktuální duplikáty:
ALTER IGNORE TABLE `RegisteredUsersTable` ADD UNIQUE INDEX unique_email (`UserEmail`);
Po přidání použijte INSERT IGNORE
nebo INSERT...ON DUPLICATE KEY UPDATE
. Předtvarují vložku pouze v případě, že neexistují žádné duplikáty.
$mysqli->query("INSERT IGNORE INTO RegisteredUsersTable (UserName, UserEmail) VALUES ('".$newUserName."', '".$newUserEmail."')");
Mysql vyhodí chybu, protože e-mail je již v databázi. Příkaz IGNORE však říká skriptu, aby v tomto dotazu nevěnoval žádnou pozornost chybám, protože v tomto případě to očekáváte pro duplicitní řádek.
Existuje také způsob, jak upozornit uživatele zprávou o selhání nebo úspěchu, a to i pomocí INSERT IGNORE
. Použijte MYSQL LAST_INSERT_ID()
. Pokud bylo ID zadáno, bylo vloženo. Pokud ne, pak tam e-mail již byl (nebo došlo k jiné chybě).