Maintenant que nous sommes en 2015, il y a très peu de raisons de ne pas utiliser PHP AOP mise en œuvre.
La méthode "OO" appropriée et moderne pour détecter et gérer un échec d'insertion dû à une violation de contrainte de clé est la suivante :
try {
//PDO query execution goes here.
}
catch (\PDOException $e) {
if ($e->errorInfo[1] == 1062) {
//The INSERT query failed due to a key constraint violation.
}
}
L'PDOException l'objet a un lot plus à dire sur la nature spécifique de l'erreur, aussi (plus de détails que l'on pourrait jamais vouloir ou avoir besoin, apparemment).