Ich führe mehrere Abfragen mit PDO aus. Wenn die zweite Abfrage fehlschlägt, wird jetzt Exception ausgelöst.
%Vor%Der obige Code wird ausgeführt, ohne eine Ausnahme auszulösen.
Wie kann ich sicherstellen, dass alle Abfragen erfolgreich ausgeführt wurden? Wie kann ich überprüfen, welche Abfragen fehlgeschlagen sind?
P.S. Ich verwende PDO-Multi-Abfrage, um MySQL-Dumps auszuführen, aber jede gültige .sql-Datei sollte funktionieren.
Ich fand die Antwort mit einer vorbereiteten Aussage. Nach dem Durchlaufen aller Rowsets kann ich überprüfen, ob die letzte Abfrage einen Fehler mit $stmt->errorInfo()
verursacht hat.
Der folgende Code zeigt, wie Fehler beim Ausführen mehrerer Abfragen abgefangen werden. Vermeiden Sie die Verwendung von "DELIMITER //". Abfragen werden im Allgemeinen getrennt durch ";".
%Vor%Es gibt keine klare und einfache Möglichkeit, das zu tun.
Ich denke, der beste Weg besteht darin, die Dump-Datei query-by-query zu lesen und eine Abfrage gleichzeitig auszuführen.
Sie können auch Fehlermeldungen analysieren und die Problemzeilennummer extrahieren, wenn der DB-Treiber dies meldet (wie 'unbekannter Bezeichner' blabla ' in Zeile 666 ).