Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] MySql Mehrfach DELETE

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] MySql Mehrfach DELETE

    Guten tag zusammen,

    ich habe grade erst mit PHP angefangen und habe folgendes Problem:
    PHP-Code:
    if ((int)$_GET['buch_id']>0) {
    $buch_id = (int)$_GET['buch_id'];

    $sql 'delete from buch_autor where buch_id = "'.$buch_id.'" LIMIT = 1';
    $sql 'delete from autor a where (select count(*) from buch_autor b where a.autor_id = b.autor_id)) = 0 LIMIT = 1';
    $sql 'delete from buch_schlagwort where buch_id = "'.$buch_id.'" LIMIT = 1';
    $sql 'delete from schlagwort a where (select count(*) from buch_schlagwort b where a.schlagwort_id = b.schlagwort_id)) = 0 LIMIT = 1';    
    $sql 'delete from bestand where buch_id = "'.$buch_id.'" LIMIT = 1';
    }else {
    echo 
    "ERROR (keine Buch ID vorhanden) bitte klicken Sie auf home!"
    Die ganzen $sql Statements will ich ausführen und das nacheinander.
    (möglichst zusammenhängend)
    Im oberen Teil hole ich mir die Buch_id, das geht auch. (habs mir mal mit echo ausgeben lassen).

    Ich hab nix gefunden wie das gehen soll.....
    In mysqli gibts ein multi_query aber das kann ich nicht verwenden weil ich eine MySQL Datenbank brauch.(die bekomm ich vorgegeben)

    Sollte es sowas in der Art schon geben entschuldige ich mich (hab nix gefunden).

    im Vorraus:
    Vielen Dank für die Hilfe

  • #2
    Dann kannst du die Querys nicht in einer einzigen Abfrage ausführen. Einfach für jeden Query mysql_query() aufrufen und gut ist. Sollten die Aufgaben unbedingt zusammen ausgeführt werden müssen und bei Fehler eines der Querys wieder "zurückgeführt" werden dann solltest du dich mal nach Transaktionen umschauen.

    Kommentar


    • #3
      Ahh ok.
      Danke für die Hilfe.

      Kommentar


      • #4
        Im MySQL 5.1 Referenzhandbuch steht dazu:

        Sie können in einer DELETE-Anweisung mehrere Tabellen angeben, aus denen je nach Bedingung der WHERE-Klausel Datensätze
        gelöscht werden. Allerdings können Sie ORDER BY oder LIMIT nicht in einer DELETE-Anweisung für mehrere Tabellen
        SQL-Anweisungssyntax verwenden. Die Klausel table_references listet die Tabellen auf, die im Join berücksichtigt werden. Die Syntax ist in Abschnitt 13.2.7.1, ..JOIN“, beschrieben.
        Bei der ersten Mehrtabellensyntax werden nur passende Datensätze aus den Tabellen gelöscht, die vor der FROM-Klausel
        aufgelistet sind. Bei der zweiten Mehrtabellensyntax werden nur passende Datensätze aus den Tabellen gelöscht, die in der FROM Klausel
        (vor der USING-Klausel) aufgelistet sind. Die Folge ist, dass Sie Datensätze aus vielen Tabellen gleichzeitig löschen und
        gleichzeitig in weiteren Tabellen nur suchen lassen können:

        Code:
        DELETE t1, t2 FROM t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id;
        Grüße
        Thomas

        Kommentar

        Lädt...
        X