sql >> Database >  >> RDS >> Mysql

controleer op dubbele invoer vs gebruik PDO errorInfo resultaat

Je zou dit kunnen uitvoeren met een try catch-blok:

try {
   $prep->execute($values);
   // do other things if successfully inserted
} catch (PDOException $e) {
   if ($e->errorInfo[1] == 1062) {
      // duplicate entry, do something else
   } else {
      // an error other than duplicate entry occurred
   }
}

Je zou ook kunnen kijken naar alternatieven zoals "INSERT IGNORE" en "INSERT... ON DUPLICATE KEY UPDATE" - hoewel ik denk dat deze MySQL-specifiek zijn en indruisen tegen de draagbaarheid van het gebruik van PDO, als dat iets is waar je je zorgen over maakt .

Bewerken:om uw vraag formeler te beantwoorden, voor mij, elimineert oplossing #1 (de defensieve programmeur) in volledig gebruik effectief het punt van de unieke beperking in de eerste plaats. Dus ik ben het eens met uw idee om MySQL de gegevenscontrole te laten verzorgen.



  1. SQLAlchemy DELETE Fout veroorzaakt door een zowel luie belasting als een dynamische versie van dezelfde relatie

  2. Rijen verwijderen met MySQL LEFT JOIN

  3. Hoe kan ik gegevens die uit een tekstgebied zijn ontvangen op de juiste manier opschonen, wanneer ik deze weer in het tekstgebied uitvoer?

  4. parse.com open-source alternatieven voor backend