PHP / MySQL - “BEGIN… COMMIT” funktioniert nicht
Ich habe nach einer Möglichkeit gesucht, Daten in zwei Datenbanktabellen in einer einzigen Abfrage so einzufügen, dass, wenn eine fehlschlägt, keine gespeichert wird (ich möchte keine verwaisten Daten). Ich bin auf eine Stapelüberlauf-Frage gestoßen, die mir gezeigt hat, wie ich BEGIN ... COMMIT verwende, um dies zu erreichen, aber es funktioniert einfach nicht.
Hier ist die Abfrage, die ich eingerichtet habe:
$query = "BEGIN;
INSERT INTO content_subpages (title, url_referer) VALUES ('$pagetitle','$url_referer');
INSERT INTO ccm_main_menu (sub_item, sub_item_link,sub_item_sort_order) VALUES ('$pagetitle','$url_referer','$newsort');
COMMIT;";
mysql_query($query) or die (mysql_error());
Ich erhalte folgenden Fehler:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO content_subpages (title, url_referer) VALUES ('TESTING','testing'); ' at line 2
Dies ist das erste Mal, dass ich BEGIN ... COMMIT verwende. Es ist also vernünftig, dass ich etwas falsch mache, aber ich habe die Syntax des SQL Fiddle-Beispiels befolgt, das in der ausgewählten Antwort auf die Stapelüberlauf-Frage angegeben ist (http: // stackoverflow.com/questions/12649706/mysql-insert-into-multiple-tables-in-same-query-with-begincommit), aber es funktioniert immer noch nicht.
Wenn ich ohne BEGIN ... COMMIT auf einfache Weise das Mehrfach-INSERT-Ergebnis "Alles oder Nichts" erzielen kann, wäre das eine akzeptable Lösung.
Danke im Voraus