HeikoH: Das ";" ist zu viel

Hallo,

ich möchte über einen Dateiupload für eine Datei die mySQL Anweisungen beinhaltet ausführen lassen.

INSERT INTO tabelle1
VALUES (
     1,
     'wert1',
     '0',
     'wert2',
     '0' );

INSERT INTO tabelle2
VALUES (
     1,
     'wert1',
     '0',
     'wert2',
     '0' );

Das Ende der Insertanweisung wird mit ";" beendet. Doch leider
bricht auch hier die Anweisung ab. Wenn ich nur eine Tabelle mit Werte versehe und den ";" weglasse funktioniert es.
Wie kann ich PHP (oder mySQL) überlisten?

  1. Hallo,

    ich möchte über einen Dateiupload für eine Datei die mySQL Anweisungen beinhaltet ausführen lassen.

    INSERT INTO tabelle1
    VALUES (
         1,
         'wert1',
         '0',
         'wert2',
         '0' );

    INSERT INTO tabelle2
    VALUES (
         1,
         'wert1',
         '0',
         'wert2',
         '0' );

    Das Ende der Insertanweisung wird mit ";" beendet. Doch leider
    bricht auch hier die Anweisung ab. Wenn ich nur eine Tabelle mit Werte versehe und den ";" weglasse funktioniert es.
    Wie kann ich PHP (oder mySQL) überlisten?

    Wie führst Du das aus?
    Was für Fehlermeldungen kommen?

    Andreas

    1. Hallo,

      ich möchte über einen Dateiupload für eine Datei die mySQL Anweisungen beinhaltet ausführen lassen.

      INSERT INTO tabelle1
      VALUES (
           1,
           'wert1',
           '0',
           'wert2',
           '0' );

      INSERT INTO tabelle2
      VALUES (
           1,
           'wert1',
           '0',
           'wert2',
           '0' );

      Das Ende der Insertanweisung wird mit ";" beendet. Doch leider
      bricht auch hier die Anweisung ab. Wenn ich nur eine Tabelle mit Werte versehe und den ";" weglasse funktioniert es.
      Wie kann ich PHP (oder mySQL) überlisten?

      Wie führst Du das aus?

      Ich öffne die Datei mit "fopen", dann eine "while" Schleife zum Zeilenauslesen und einer Variablen werden die Zeilen zugeführt und dann "mysql_query" - also nix besonderes denk ich

      Was für Fehlermeldungen kommen?

      Einen Syntaxfehler. Er zeigt auch das ";" an und wenn ich es weglasse dann near INSERT INTO tabelle2

      Andreas/Heiko

      1. Tach (nochmal...)

        Passen die Werte zu *beiden* Tabellen?

        fastix

        1. Tach (nochmal...)

          Passen die Werte zu *beiden* Tabellen?

          fastix

          Sie passen, ich denke, es liegt an der Beendigung von mysql_query durch das Semikolon...

          1. Tach (nochmal...)
            Sie passen, ich denke, es liegt an der Beendigung von mysql_query durch das Semikolon...

            Könnte sein. Dann splitte die Variable am Semikolon und schicke die Befehle in einer Schleife einzeln durch. (Als ersten work- arround)
            Soweit ich mich erinnere, schreibe ich bei den SQL- Befehlen auch keine ";" dahinter, wenn ich PHP verwende. (Sieh übrigens mal nach: der PHP- Admin zeigt Dir den SQL- Befehl wieder an. Vielleicht ja die "verhübschte" Version...

            Dann dürfen wir beide PHP- Handbuch lesen...

            fastix

            1. Tach (nochmal...)
              Sie passen, ich denke, es liegt an der Beendigung von mysql_query durch das Semikolon...

              Könnte sein. Dann splitte die Variable am Semikolon und schicke die Befehle in einer Schleife einzeln durch. (Als ersten work- arround)
              Soweit ich mich erinnere, schreibe ich bei den SQL- Befehlen auch keine ";" dahinter, wenn ich PHP verwende. (Sieh übrigens mal nach: der PHP- Admin zeigt Dir den SQL- Befehl wieder an. Vielleicht ja die "verhübschte" Version...

              Dann dürfen wir beide PHP- Handbuch lesen...

              fastix

              Was soll ich sagen: myAdmin kann damit um:
              ...
              'ohne',
              '0',
              'tasche',
              '0' );
              INSERT INTO klasse4
              VALUES (
              2,
              'NULL',
              'NULL',
              ...
              Mal einen Ausschnitt dazu.
              ...und das Handbuch?

              Heiko

              1. Tach (nochmal...)
                Sie passen, ich denke, es liegt an der Beendigung von mysql_query durch das Semikolon...

                Könnte sein. Dann splitte die Variable am Semikolon und schicke die Befehle in einer Schleife einzeln durch. (Als ersten work- arround)

                Mach das jetzt erstmal so...

                ich finde es auch nicht. wenn ich es mit dem admin mache, dann nimmt er die Dumps, gebe ich es anders ein (Ich habe ein PHP- Script für administrative Zwecke, dann meckert mysql sogar bei:

                select * from irgendwas;
                select * from irgendwas;

                Und zwar mit und ohne Zeilenumbruch. Schick die einzelnen Befehle also in einer Schleife einzeln hin, nachdem Du sie getrennt hast. Mach einfach ein Array und ein While. Du musst ja die Datenbankverbindung nicht jedesmal schließen und wieder öffnen.

                Ich muss jetzt los, auf die Autobahn...

                Morgen früh gehts weiter mit arbeiten. Aber gut mal zu sehen, dass ich auch nicht alles weiss.

                fastix

                1. Tach (nochmal...)
                  Sie passen, ich denke, es liegt an der Beendigung von mysql_query durch das Semikolon...

                  Könnte sein. Dann splitte die Variable am Semikolon und schicke die Befehle in einer Schleife einzeln durch. (Als ersten work- arround)

                  Mach das jetzt erstmal so...

                  ich finde es auch nicht. wenn ich es mit dem admin mache, dann nimmt er die Dumps, gebe ich es anders ein (Ich habe ein PHP- Script für administrative Zwecke, dann meckert mysql sogar bei:

                  select * from irgendwas;
                  select * from irgendwas;

                  Und zwar mit und ohne Zeilenumbruch. Schick die einzelnen Befehle also in einer Schleife einzeln hin, nachdem Du sie getrennt hast. Mach einfach ein Array und ein While. Du musst ja die Datenbankverbindung nicht jedesmal schließen und wieder öffnen.

                  Ich muss jetzt los, auf die Autobahn...

                  Morgen früh gehts weiter mit arbeiten. Aber gut mal zu sehen, dass ich auch nicht alles weiss.

                  fastix

                  Ich danke Dir aber sehr herzlich für Deine Mühen und mache es so.
                  Morgen abend erfährst Du das Ergebnis.
                  Fahr nich so schnell (... würde meine Mutter jetzt sagen)
                  Gute Nacht!

                  HeikoH

                2. letzter Tip:

                  Nimm mal den PHP- Admin auseinander: Der "verhübscht" die "Abfrage" auf jeden Fall. Vielleicht findest Du darinnen was nettes. Schau einfach nach, welches Script das Formular aufruft und dann viel Spaß beim Lesen!

                  selber nachgeschaut:

                  Es sind: db_readdump.php
                  oder: ldi_check.php

                  Dort muss das Geheimnis drinstehen.

                  Gute Nacht!

                  fastix®

      2. Hallo,

        Wie führst Du das aus?
        Ich öffne die Datei mit "fopen", dann eine "while" Schleife zum Zeilenauslesen und einer Variablen werden die Zeilen zugeführt und dann "mysql_query" - also nix besonderes denk ich

        Warum heißt das wohl mysql_query und nicht mysql_queries?

        Was für Fehlermeldungen kommen?
        Einen Syntaxfehler. Er zeigt auch das ";" an und wenn ich es weglasse dann near INSERT INTO tabelle2

        Ich weiß nicht, ob es von PHP aus möglich ist, direkt im MySQL kann man Dateien, die mehrere SQL-Anweisungen enthalten, per
        source Dateiname
        ausführen. Das PHP-Äquivalent kenne ich nicht.

        Alternativ: in Einzelstatements aufteilen und einzeln per my_sql_query ausführen.

        Andreas

        1. Hallo,

          Wie führst Du das aus?
          Ich öffne die Datei mit "fopen", dann eine "while" Schleife zum Zeilenauslesen und einer Variablen werden die Zeilen zugeführt und dann "mysql_query" - also nix besonderes denk ich

          Warum heißt das wohl mysql_query und nicht mysql_queries?

          Was meinst Du damit???

          Was für Fehlermeldungen kommen?
          Einen Syntaxfehler. Er zeigt auch das ";" an und wenn ich es weglasse dann near INSERT INTO tabelle2

          Ich weiß nicht, ob es von PHP aus möglich ist, direkt im MySQL kann man Dateien, die mehrere SQL-Anweisungen enthalten, per
          source Dateiname
          ausführen. Das PHP-Äquivalent kenne ich nicht.

          Bei PHPmyAdmin funktioniert es doch auch?!?

          Alternativ: in Einzelstatements aufteilen und einzeln per my_sql_query ausführen.

          ...wenns gar nicht anders geht, muss ich wohl...

          Andreas

          Heiko

          1. Warum heißt das wohl mysql_query und nicht mysql_queries?
            Was meinst Du damit???

            query = Einzahl, queries = Mehrzahl.
            Du hast zwei queries (zweimal insert).

            Andreas

            1. Warum heißt das wohl mysql_query und nicht mysql_queries?
              Was meinst Du damit???

              query = Einzahl, queries = Mehrzahl.
              Du hast zwei queries (zweimal insert).

              Andreas

              ...also doch zerlegen?

              HeikoH

    2. Hallo!

      Ich nehme an, Du lädst die Datei auf den Server, öffnest Sie zum Lesen, schreibst die geamte "Abfrage" in eine Variable und schickst diese zur Datenbank?

      Ok. Lass Dir doch mal den Inhalt der Variable ausgeben. Dann wirst Du eventuell weitersehen.

      Passen die Werte zu *beiden* Tabellen?

      fastix

      1. Hallo!

        Ich nehme an, Du lädst die Datei auf den Server, öffnest Sie zum Lesen, schreibst die geamte "Abfrage" in eine Variable und schickst diese zur Datenbank? Bingo!!!

        Ok. Lass Dir doch mal den Inhalt der Variable ausgeben. Dann wirst Du eventuell weitersehen.

        Auch schon getan, so wie in der Datei geschrieben...

        Passen die Werte zu *beiden* Tabellen? Ja, kein Problem denn bei PHPmyAdmin funzt es.

        fastix

        Heiko

        1. Hallo!

          Tach!

          Passen die Werte zu *beiden* Tabellen? Ja, kein Problem denn bei PHPmyAdmin funzt es.

          Was steht IN den Werten? PHPMyAdmin "verhübscht" die Eingaben nämlich mySQL- gerecht.

          Wenn Du mySQL lokal installiert hast, kannst Du auch Befehle aus einer Datei einlesen und hast die Fehlermeldung im Klartext vor dir. Versuch das mal...

          fastix

          1. Hallo!

            Tach!

            Passen die Werte zu *beiden* Tabellen? Ja, kein Problem denn bei PHPmyAdmin funzt es.

            Was steht IN den Werten? PHPMyAdmin "verhübscht" die Eingaben nämlich mySQL- gerecht.

            ...auch schon geprüft, sind i.O. (mit 123 oder abcd als Beispiel sollte es klappen)

            Wenn Du mySQL lokal installiert hast, kannst Du auch Befehle aus einer Datei einlesen und hast die Fehlermeldung im Klartext vor dir. Versuch das mal...

            ...na, da frag ich Dich doch: Wo finde ich sie? Wird sie protokolliert? ...nich gefunden

            fastix

            HeikoH