Bạn có thể đang thực thi điều này bằng một khối try catch:
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
}
}
Bạn cũng có thể xem xét các lựa chọn thay thế như "CHÈN BỎ QUA" và "CHÈN ... TRÊN CẬP NHẬT KHÓA DUPLICATE" - mặc dù tôi nghĩ đó là những thứ dành riêng cho MySQL và sẽ đi ngược lại tính di động của việc sử dụng PDO, nếu đó là điều bạn lo ngại .
Chỉnh sửa:Để trả lời chính thức hơn câu hỏi của bạn, đối với tôi, giải pháp số 1 (lập trình phòng thủ) được sử dụng đầy đủ có hiệu quả loại bỏ điểm hạn chế duy nhất ngay từ đầu. Vì vậy, tôi sẽ đồng ý với suy nghĩ của bạn về việc để MySQL đảm nhận việc kiểm tra dữ liệu.