Ik vond het antwoord in het gebruik van een voorbereide verklaring. Nadat ik alle rijensets heb doorlopen, kan ik controleren of de laatst uitgevoerde query een fout heeft veroorzaakt met behulp van $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();
}