Помислете за поставяне на unique
индекс на тази конкретна таблица. Следният код ще добави индекса и ще премахне всички текущи дубликати:
ALTER IGNORE TABLE `RegisteredUsersTable` ADD UNIQUE INDEX unique_email (`UserEmail`);
След като това се добави, използвайте INSERT IGNORE
или INSERT...ON DUPLICATE KEY UPDATE
. Те ще оформят предварително вложката само ако няма дубликати.
$mysqli->query("INSERT IGNORE INTO RegisteredUsersTable (UserName, UserEmail) VALUES ('".$newUserName."', '".$newUserEmail."')");
Mysql ще изведе грешка, защото имейлът вече е в базата данни. Въпреки това, командата IGNORE казва на скрипта да не обръща никакво внимание на грешките за тази заявка, защото в този случай го очаквате за дублиран ред.
Освен това има начин да предупредите потребителя си със съобщение за грешка или успех, дори с INSERT IGNORE
. Използвайте MYSQL LAST_INSERT_ID()
. Ако беше даден идентификационен номер, той беше въведен. Ако не, значи имейлът вече е бил там (или е имало друга грешка).