Mysql
 sql >> Database >  >> RDS >> Mysql

verifica la presenza di voci duplicate rispetto all'utilizzo del risultato errorInfo PDO

Potresti eseguirlo con un blocco try catch:

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
   }
}

Potresti anche esaminare alternative come "INSERT IGNORE" e "INSERT... ON DUPLICATE KEY UPDATE" - anche se penso che siano specifiche per MySQL e andrebbero contro la portabilità dell'utilizzo di PDO, se è qualcosa di cui sei preoccupato .

Modifica:per rispondere in modo più formale alla tua domanda, per me, la soluzione n. 1 (il programmatore difensivo) in pieno utilizzo elimina efficacemente il punto del vincolo univoco in primo luogo. Quindi sono d'accordo con il tuo pensiero di lasciare che MySQL si occupi del controllo dei dati.