Considere poner un unique
índice en esta tabla en particular. El siguiente código agregará el índice y eliminará los duplicados actuales:
ALTER IGNORE TABLE `RegisteredUsersTable` ADD UNIQUE INDEX unique_email (`UserEmail`);
Una vez agregado esto, use INSERT IGNORE
o INSERT...ON DUPLICATE KEY UPDATE
. Solo preformarán el inserto si no hay duplicados.
$mysqli->query("INSERT IGNORE INTO RegisteredUsersTable (UserName, UserEmail) VALUES ('".$newUserName."', '".$newUserEmail."')");
Mysql arrojará un error porque el correo electrónico ya está en la base de datos. Sin embargo, el comando IGNORAR le dice a la secuencia de comandos que no preste atención a los errores de esta consulta porque, en este caso, lo espera para una fila duplicada.
Además, existe una forma de alertar a su usuario con un mensaje de error o éxito, incluso con INSERT IGNORE
. Usa MYSQL LAST_INSERT_ID()
. Si se proporcionó una identificación, se insertó. Si no, entonces el correo electrónico ya estaba allí (o hubo otro error).