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).