sql >> Database >  >> RDS >> Mysql

mysqli invoegen - maar alleen als het geen duplicaat is

Overweeg een unique . te plaatsen index op deze specifieke tabel. De volgende code voegt de index toe en verwijdert alle huidige duplicaten:

ALTER IGNORE TABLE `RegisteredUsersTable` ADD UNIQUE INDEX unique_email (`UserEmail`);

Zodra dit is toegevoegd, gebruikt u INSERT IGNORE of INSERT...ON DUPLICATE KEY UPDATE . Ze zullen de invoeging alleen voorvormen als er geen duplicaten zijn.

$mysqli->query("INSERT IGNORE INTO RegisteredUsersTable (UserName, UserEmail) VALUES ('".$newUserName."', '".$newUserEmail."')");

Mysql geeft een foutmelding omdat de e-mail al in de database staat. Het IGNORE-commando vertelt het script echter dat het geen aandacht moet besteden aan fouten voor deze query, omdat u in dit geval een dubbele rij verwacht.

Er is ook een manier om uw gebruiker te waarschuwen met een fout- of succesbericht, zelfs met INSERT IGNORE . Gebruik MYSQL LAST_INSERT_ID() . Als er een ID werd gegeven, werd deze ingevoegd. Zo niet, dan was de e-mail er al (of was er een andere fout).



  1. Kan iemand helpen uitleggen waarom het niet gebruiken van een SQL JOIN een slechte gewoonte en verkeerd is?

  2. Een login.sql-bestand maken voor SQLcl

  3. Aankondiging van ClusterControl 1.5 - met automatische back-upverificatie en cloud-upload

  4. Tel zoekcriteriarecord op basis van zoekopdracht uitgevoerd door gebruiker (MYSQL PHP)