Tôi đã tìm thấy câu trả lời bằng cách sử dụng một tuyên bố đã chuẩn bị sẵn. Sau khi lặp qua tất cả các tập hợp hàng, tôi có thể kiểm tra xem truy vấn cuối cùng được thực thi có gây ra lỗi hay không bằng cách sử dụng $stmt->errorInfo()
.
$db = new PDO("mysql:host=localhost;dbname=test", 'root', '');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
$sql = "
DELETE FROM car;
INSERT INTO car(name, type) SELECT name, from FROM vehicle;
";
$stmt = $db->prepare($sql);
$stmt->execute();
$i = 0;
do {
$i++;
} while ($stmt->nextRowset());
$error = $stmt->errorInfo();
if ($error[0] != "00000") {
echo "Query $i failed: " . $error[2];
die();
}