Mik: Query Error eingrenzen

Hallo,

mir fällt es derzeit schwer, einen vermeintlichen Fehler in einer Query zu finden. Ich rufe die Query über php auf und sie produziert einen 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 '..."

Wenn ich mir die Query vor dem Fehler ausgeben lasse und sie selber in phpmyadmin ausführe, prodziert sie die gewünschte Ergebnismenge.

Ich habe bisher kontrolliert, ob ich ggf. eine andere Query ausgeben lasse als ich dann über das script ausführe. Andere Möglichkeiten fallen mir nicht ein, warum eine Query im script (php) einen Fehler produziert, dieselbe Query in phpmyadmin (ebenfalls php) aber die gewünschte Ergebnismenge produziert.

Kann mir mit diesen Angaben jemand auf die Sprünge helfen?

Mik

  1. Tach!

    mir fällt es derzeit schwer, einen vermeintlichen Fehler in einer Query zu finden.

    §1: Der Computer hat immer recht. Wenn da eine Fehlermeldung ausgegeben wird, dann ist da auch ein Fehler.

    Ich rufe die Query über php auf und sie produziert einen 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 '..."

    An dieser Stelle fällt auf, dass die Syntax nicht mehr stimmt. Die eigentliche Ursache kann durchaus weiter vorn liegen. Wie beim Zuknöpfen eines Hemdes, wenn dir auch erst oben auffällt, dass ein Knopf oder Loch "zu viel" ist. Die Ursache ist aber weiter unten.

    Kann mir mit diesen Angaben jemand auf die Sprünge helfen?

    Mehr kann ich nicht sagen, ohne das konkrete Statement zu sehen.

    dedlfix.

    1. An dieser Stelle fällt auf, dass die Syntax nicht mehr stimmt. Die eigentliche Ursache kann durchaus weiter vorn liegen. Wie beim Zuknöpfen eines Hemdes, wenn dir auch erst oben auffällt, dass ein Knopf oder Loch "zu viel" ist. Die Ursache ist aber weiter unten.

      Hi,

      kann das mal ein "Registrierter" in die Zitatsliste einfügen? Ich lach mich hier grad schlapp. Sehr schön ausgedrückt.

      Zum Inhalt komme ich später wieder, ich muß jetzt nochmal im Script nachschauen, was früher als Ursachen in Betracht kommen käönnte.

      Mik

      1. Meine Herren!

        An dieser Stelle fällt auf, dass die Syntax nicht mehr stimmt. Die eigentliche Ursache kann durchaus weiter vorn liegen. Wie beim Zuknöpfen eines Hemdes, wenn dir auch erst oben auffällt, dass ein Knopf oder Loch "zu viel" ist. Die Ursache ist aber weiter unten.

        kann das mal ein "Registrierter" in die Zitatsliste einfügen?

        Erledigt, ich glaub die Analogie werd ich selber noch mal benutzen.

        --
        “All right, then, I'll go to hell.” – Huck Finn
      2. Tach!

        Zum Inhalt komme ich später wieder, ich muß jetzt nochmal im Script nachschauen, was früher als Ursachen in Betracht kommen käönnte.

        Als erstes wäre da das fertige Statement selbst. Das lass dir ausgeben und suche darin den Syntaxfehler (oder zeig es uns). Anschließend erst solltest du in dem Code nachforschen, der das Statement erstellt.

        dedlfix.

        1. Hi,

          Als erstes wäre da das fertige Statement selbst. Das lass dir ausgeben und suche darin den Syntaxfehler (oder zeig es uns). Anschließend erst solltest du in dem Code nachforschen, der das Statement erstellt.

          Genau das habe ich ja gemacht. Und ins SQL-Feld der entsprechenden db (innerhalb des phpmyadmin) eingegeben produziert es genau die gewünschte Ergebnismenge.

          Eigenartigerweise läuft die Query in einer anderen db auch im script fehlerfrei und produziert die gewünschte Ergenismenge.

          Daraus ließe sich schließen, dass die DBs unterschiedlich sind. Dann wäre die Fehlermeldung aber eine andere (jedenfalls würde kein Syntaxfehler angemahnt). Wäre es aber wirklich ein Syntaxfehler, dann dürfte die Query auch im phpmyadmin "nicht laufen", oder?

          Mik

          1. Tach!

            Genau das habe ich ja gemacht. Und ins SQL-Feld der entsprechenden db (innerhalb des phpmyadmin) eingegeben produziert es genau die gewünschte Ergebnismenge.

            phpMyAdmin analysiert dern eingegebenen Text und greift mitunter ein. Z.B. wenn es mehrere Statements sind und die verwendete Schnittstelle keine Multi-Query kann, dann übergibt es die Teil-Statements stückweise. Dürfte aber in deinem Fall nicht relevant sein, weil du dafür mysqli_multi_query() verwenden müsstest. Ich ge mal stillschweigend davon aus, dass das bei dir nicht der Fall ist.

            Eigenartigerweise läuft die Query in einer anderen db auch im script fehlerfrei und produziert die gewünschte Ergenismenge.
            Daraus ließe sich schließen, dass die DBs unterschiedlich sind.

            Hast du eventuell unterschiedliche Server-Versionen vorliegen?

            Dann wäre die Fehlermeldung aber eine andere (jedenfalls würde kein Syntaxfehler angemahnt). Wäre es aber wirklich ein Syntaxfehler, dann dürfte die Query auch im phpmyadmin "nicht laufen", oder?

            Wenn der pma nur auf dem neueren System läuft bzw. nicht auf denselben Datenbankserver zugreift, dann sind die Ausgangsbedingungen nocht vergleichbar. Das hast du hoffentlich beachtet.

            dedlfix.

            1. Hi,

              weil du dafür mysqli_multi_query() verwenden müsstest. Ich ge mal stillschweigend davon aus, dass das bei dir nicht der Fall ist.

              Ist nicht der Fall.

              Hast du eventuell unterschiedliche Server-Versionen vorliegen?

              ...auf demselben Server.

              Wenn der pma nur auf dem neueren System läuft bzw. nicht auf denselben Datenbankserver zugreift, dann sind die Ausgangsbedingungen nocht vergleichbar. Das hast du hoffentlich beachtet.

              Ja. pma und script greifen auf exact dieselbe (nicht die gleiche) DB zu.

              Ich tappe im Dunkeln...

              Mik

              1. Hi Mik,

                Ja. pma und script greifen auf exact dieselbe (nicht die gleiche) DB zu.

                Ich tappe im Dunkeln...

                Ich hatte so ein Problem auch mal, kann mich aber weiß Gott nicht mehr daran erinnern wie ich es gelöst habe. Zeig doch mal die fertige Query und den erzeugenden Code.

                Grüße,

                Junker

      3. Hi,

        war da nicht mal was, daß mysql_query das abschließende ; nicht mag? Oder war's umgekehrt, also so, daß das abschließende ; sein mußte?

        PHPMyAdmin korrigiert das vermutlich in die richtige Richtung ...

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
        1. Hallo

          war da nicht mal was, daß mysql_query das abschließende ; nicht mag? Oder war's umgekehrt, also so, daß das abschließende ; sein mußte?

          mysql_query läuft mit ohne „;“.

          Tschö, Auge

          --
          Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
          Terry Pratchett, "Wachen! Wachen!"
          ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
          Veranstaltungsdatenbank Vdb 0.3
  2. Kann es sein, dass Du womöglich zu viele Quotas machst? Zum Beispiel zusätzlich um die query?

    Achte auch darauf, dass wenn Du Dir die query anschaust, nicht etwa im "HTML-Modus" des Browsers zu tun, sondern ausschließlich den Quelltext zu Rate zu ziehen... Sonst sieht das eine oder andere womöglich anders aus als es ist.

    Jörg Reinholz