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.