Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich eine Fehlermeldung erhalten, wenn mehrere Abfragen mit PDO ausgeführt werden?

Ich fand die Antwort in der Verwendung einer vorbereiteten Anweisung. Nachdem ich alle Rowsets durchlaufen habe, kann ich mit $stmt->errorInfo() prüfen, ob die letzte ausgeführte Abfrage einen Fehler verursacht hat .

$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();
}