Mysql
 sql >> Base de données >  >> RDS >> Mysql

vérifier l'entrée en double par rapport à l'utilisation du résultat errorInfo PDO

Vous pourriez exécuter ceci avec un bloc 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
   }
}

Vous pouvez également rechercher des alternatives telles que "INSERT IGNORE" et "INSERT... ON DUPLICATE KEY UPDATE" - bien que je pense que celles-ci sont spécifiques à MySQL et iraient à l'encontre de la portabilité de l'utilisation de PDO, si c'est quelque chose qui vous préoccupe .

Edit:Pour répondre plus formellement à votre question, pour moi, la solution n ° 1 (le programmeur défensif) en pleine utilisation élimine efficacement le point de la contrainte unique en premier lieu. Je serais donc d'accord avec votre idée de laisser MySQL s'occuper de la vérification des données.