Rozważ umieszczenie unique indeks na tej konkretnej tabeli. Poniższy kod doda indeks i usunie wszystkie bieżące duplikaty:
ALTER IGNORE TABLE `RegisteredUsersTable` ADD UNIQUE INDEX unique_email (`UserEmail`);
Po dodaniu użyj INSERT IGNORE lub INSERT...ON DUPLICATE KEY UPDATE . Wykonają wstawkę tylko wtedy, gdy nie ma duplikatów.
$mysqli->query("INSERT IGNORE INTO RegisteredUsersTable (UserName, UserEmail) VALUES ('".$newUserName."', '".$newUserEmail."')");
Mysql zgłosi błąd, ponieważ e-mail jest już w bazie danych. Jednak polecenie IGNORE mówi skryptowi, aby nie zwracał uwagi na błędy w tym zapytaniu, ponieważ w tym przypadku oczekuje się tego dla zduplikowanego wiersza.
Istnieje również sposób, aby ostrzec użytkownika komunikatem o niepowodzeniu lub powodzeniu, nawet przy użyciu INSERT IGNORE . Użyj MYSQL LAST_INSERT_ID() . Jeśli podano identyfikator, został on wstawiony. Jeśli nie, oznacza to, że e-mail już tam był (lub wystąpił inny błąd).