sql >> Base de Datos >  >> RDS >> Mysql

inserción de mysqli, pero solo si no es un duplicado

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