Може да изпълните това с блок за улавяне на проби:
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
}
}
Можете също така да разгледате алтернативи като "INSERT IGNORE" и "INSERT... ON DUPLICATE KEY UPDATE" - въпреки че мисля, че те са специфични за MySQL и биха били в противоречие с преносимостта на използването на PDO, ако това е нещо, което ви притеснява .
Редактиране:За да отговоря по-официално на вашия въпрос, за мен решение #1 (защитният програмист) при пълно използване ефективно елиминира точката на уникалното ограничение на първо място. Така че бих се съгласил с вашата мисъл да оставите MySQL да се погрижи за проверката на данни.