Considere colocar um
unique
índice nesta tabela em particular. O código a seguir adicionará o índice e removerá quaisquer duplicatas atuais:ALTER IGNORE TABLE `RegisteredUsersTable` ADD UNIQUE INDEX unique_email (`UserEmail`);
Depois que isso for adicionado, use
INSERT IGNORE
ou INSERT...ON DUPLICATE KEY UPDATE
. Eles só irão pré-formar a inserção se não houver duplicatas. $mysqli->query("INSERT IGNORE INTO RegisteredUsersTable (UserName, UserEmail) VALUES ('".$newUserName."', '".$newUserEmail."')");
O MySQL lançará um erro porque o email já está no banco de dados. No entanto, o comando IGNORE está dizendo ao script para não prestar atenção aos erros dessa consulta porque, nesse caso, você espera isso para uma linha duplicada.
Além disso, existe uma maneira de alertar seu usuário com uma mensagem de falha ou sucesso, mesmo com
INSERT IGNORE
. Use MYSQL LAST_INSERT_ID()
. Se um ID foi fornecido, ele foi inserido. Caso contrário, o e-mail já estava lá (ou houve outro erro).