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ụ.