Sie könnten dies mit einem Try-Catch-Block ausführen:
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
}
}
Sie könnten auch nach Alternativen wie "INSERT IGNORE" und "INSERT... ON DUPLICATE KEY UPDATE" suchen - obwohl ich denke, dass diese MySQL-spezifisch sind und gegen die Portabilität der Verwendung von PDO verstoßen würden, wenn Sie sich darüber Sorgen machen .
Bearbeiten:Um Ihre Frage förmlicher zu beantworten, beseitigt Lösung Nr. 1 (der defensive Programmierer) bei voller Nutzung den Punkt der eindeutigen Einschränkung von vornherein. Daher würde ich Ihrem Gedanken zustimmen, MySQL die Datenüberprüfung übernehmen zu lassen.