Truy vấn của bạn trông hoàn toàn lộn xộn, đặc biệt là trong EXISTS của bạn truy vấn phụ. Bạn đang chọn MyTbl.ColA từ tickets ???
Lời khuyên của tôi là chỉ cần thêm một ràng buộc duy nhất trên MyTbl (ColA, ColB) .
ALTER TABLE MyTbl ADD UNIQUE (ColA, ColB);
Sau đó, INSERT của bạn sẽ không thành công với một vi phạm ràng buộc duy nhất có thể bị bắt trong một PDOException .
$stmt = $pdo->prepare('INSERT INTO MyTbl (ColA, ColB) VALUES (?, ?)');
foreach ($loopme as $foo) {
try {
$stmt->execute([$foo->fooA, $foo->fooB]);
} catch (PDOException $e) {
$errorCode = $stmt->errorInfo()[1];
if ($errorCode == 1586) {
// I think 1586 is the unique constraint violation error.
// Trial and error will confirm :)
} else {
throw $e;
}
}
}
Để giải quyết thông báo lỗi mà bạn đang thấy ... đó là do bạn không phân biệt được giữa INSERT bảng và bảng truy vấn phụ.