Du kan udføre dette med en 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
}
}
Du kan også undersøge alternativer såsom "INSERT IGNORE" og "INSERT... ON DUPLICATE KEY UPDATE" - selvom jeg tror, de er MySQL-specifikke og ville gå imod portabiliteten ved at bruge PDO, hvis det er noget, du er bekymret over. .
Edit:For mere formelt at besvare dit spørgsmål, for mig, eliminerer løsning #1 (den defensive programmør) i fuld brug effektivt pointen med den unikke begrænsning i første omgang. Så jeg er enig i din tanke om at lade MySQL tage sig af datatjek.