ralf: MySQL Fehlermeldung

Hallo,

ich bekomme bei meiner SQL anfrage von MySQL die Fehlermeldung "Query was empty". weiss hier jemand weiter?

gruss und danke

ralf


  1. Dieser Text ist frei erfunden und stellt keinen Anspruch
    auf Korrektheit bzw. Richtigkeit! Daher wird vom Autor
    keinerlei Haftung für den Inhalt übernommen!
    Vor Nachahmung wird abgeraten. Um untenstehenden Text
    lesen zu dürfen, müssen Sie dieser Vereinbarung zustimmen.
    -----------------------------------------------------------

    Hallo

    Stell Dir die DB vor wie eine Tabelle

    Sagen wir die Tabelle heißt "bla"
    Die Feldnamen stehen drüber

    id   text   date
    +-------------------+
    |  1  | huhu | 1.3. |
    |  2  |      | 4.7. |
    +-------------------+

    wenn ich nun also sage:

    SELECT * FROM bla WHERE ID='2';

    bekomme ich als ergebnis

    +-------------------+
    |  2  |      | 4.7. |
    +-------------------+

    Wenn Du nun aber sagst

    SELECT text from bla where id='2';

    bekommst Du Deine Meldung weil in der Spalte nix drin ist.
    Also ist der Query EMPTY.

    Soweit klar?

    Gut, weiter.

    Beim erstellen(!!) der Tabelle hast Du wahrscheinich bei der spalte wo Du das ausgegeben bekommst wahrscheinlich
    angebenen "NOT NULL"
    Wenn Du das wegmachst,
    steht in jeder leeren Spalte "NULL" drin
    dann passiert das ned mit dem EPMTY QUERY

    Nachträgliche veränderungen der Spalte mit ALTER TABLE...

    Siehe http://www.MySQL.com

    LG
    Aquariophile

    1. Beim erstellen(!!) der Tabelle hast Du wahrscheinich bei der spalte wo Du das ausgegeben bekommst wahrscheinlich
      angebenen "NOT NULL"
      Wenn Du das wegmachst,
      steht in jeder leeren Spalte "NULL" drin
      dann passiert das ned mit dem EPMTY QUERY

      ok habe jetzt alle Felder in der Tabelle auf Ja gestellt also nicht auf NOT NULL sondern auf NULL.

      bekomme die meldung aber immer noch

      gruss

      ralf

  2. Hi Ralf

    ich bekomme bei meiner SQL anfrage von MySQL die Fehlermeldung "Query was empty". weiss hier jemand weiter?

    kannst du etwas zusätzliche Infos liefern, insbesonders:

    • Den Aufruf in der MySQL-Schnittstelle die das liefert
    • Die Parameter (darunter wohl auch die Query) die übergeben werden.
    • Falls du n String zusammensetzt und den übergibst idealerweise
        auch was in dem String drin ist wenn du ihn übergibst

    Das was Aqua dir sagt mit Spalten die not null drin haben
    denke ich eher nicht, die Fehlermeldung müsste da spezifischer
    sein. Es sieht eher aus, als wäre der Parameter wo die Query
    (also das wo der Auftrag für die DB definiert ist) leer wäre,
    deswegen auch den zusammengesetzten String ausgeben lassen.

    Gruss Daniela

    1. hi

      das ist der string im code:

      $textsql="UPDATE text SET id='$id', praxis='$sess_praxis', titel1='$sess_titel1',vorname1='$sess_vorname1', $nachname1='$sess_nachname1', facharzt1='$sess_facharzt1', titel2='$sess_titel2',vorname2='$sess_vorname2', $nachname2='$sess_nachname2', facharzt2='$sess_facharzt2', strasse='$sess_strasse', hausnr='$sess_hausnr', land='$sess_land', plz='$sess_plz', ort='$sess_ort', vorwahl1='$sess_vorwahl1', vorwahl2='$sess_vorwahl2', vorwahl3='$sess_vorwahl3', tel1='$sess_tel1', tel2='$sess_tel2', fax='$sess_fax', email='$sess_email', homepage='$sess_homepage', bank1='$sess_bank1', blz1='$sess_blz1', konto1='$sess_konto1', bank2='$sess_bank2', blz2='$sess_blz2', konto2='$sess_konto2', logo='$sess_logo', datei='$sess_datei', bild='$sess_bild' WHERE id='$id';";

      so ruf ich ihn auf
      mysql_query($text,$connect);

      das ist der string wenn er übergeben wird:
      UPDATE text SET id='d62a0ee8c9a700d0ec6e45dd5107ba91', praxis='a', titel1='a',vorname1='a', ='a', facharzt1='a', titel2='a',vorname2='a', ='a', facharzt2='a', strasse='a', hausnr='a', land='a', plz='a', ort='a', vorwahl1='a', vorwahl2='a', vorwahl3='a', tel1='a', tel2='a', fax='a', email='a', homepage='a', bank1='a', blz1='a', konto1='a', bank2='a', blz2='a', konto2='a', logo='', datei='', bild='' WHERE id='d62a0ee8c9a700d0ec6e45dd5107ba91'

      und die fehlermeldung ist einfach nur
      query was empty

      gruss

      1. Hi Ralf

        $textsql="UPDATE text SET id='$id', praxis='$sess_praxis',
        titel1='$sess_titel1',vorname1='$sess_vorname1',
        $nachname1='$sess_nachname1', facharzt1='$sess_facharzt1',
        titel2='$sess_titel2',vorname2='$sess_vorname2',
        $nachname2='$sess_nachname2', facharzt2='$sess_facharzt2',

        ^

        strasse='$sess_strasse', hausnr='$sess_hausnr', land='$sess_land',
        plz='$sess_plz', ort='$sess_ort', vorwahl1='$sess_vorwahl1',
        vorwahl2='$sess_vorwahl2', vorwahl3='$sess_vorwahl3', tel1='$sess_tel1',
        tel2='$sess_tel2', fax='$sess_fax', email='$sess_email',
        homepage='$sess_homepage', bank1='$sess_bank1', blz1='$sess_blz1',
        konto1='$sess_konto1', bank2='$sess_bank2', blz2='$sess_blz2',
        konto2='$sess_konto2', logo='$sess_logo', datei='$sess_datei',
        bild='$sess_bild' WHERE id='$id';";

        Was daran auffällt (mit ^ gekennzeichnet), ist, das du nicht nachname2
        sondern $nachname2 setzen willst, ansich nicht schlimm falls $nachname2
        den Spaltennamen enthält, scheint jedoch eher n Tippfehler zu sein.

        das ist der string wenn er übergeben wird:
        UPDATE text SET id='d62a0ee8c9a700d0ec6e45dd5107ba91',
        praxis='a', titel1='a',vorname1='a', ='a', facharzt1='a', titel2='a',
        vorname2='a', ='a', facharzt2='a', strasse='a', hausnr='a', land='a',

        ^

        plz='a', ort='a', vorwahl1='a', vorwahl2='a', vorwahl3='a', tel1='a',
        tel2='a', fax='a', email='a', homepage='a', bank1='a', blz1='a',
        konto1='a', bank2='a', blz2='a', konto2='a', logo='', datei='',
        bild='' WHERE id='d62a0ee8c9a700d0ec6e45dd5107ba91'

        Hier siehst du das nochmal, $nachname2 ist leer, deswegen ='a', dass
        ist jedoch vom syntax her falsch.

        Ansonsten noch anzumerken, logo, datei und bild, sind die absichtlich
        leer? Neu zu setzen brauchst du übrigens nur die Felder die du auch
        ändern willst, also zb id nicht (ich glaube, Primärschlüssel kann
        man auch gar nicht ändern).

        Dann solltest du prüfen ob es den Record mit der ID den du updaten
        willst überhaupt schon gibt, von der Fehlermeldung her nehm ich aber
        an, es ist der Syntaxfehler der ihn gestört hat.

        Dein Datenbankdesign solltest du auch nochmal anschauen, das sieht nach
        viel Redundanz aus und dem Versuch mehrfach vorkommende Attribute
        zwanghaft in die Tabelle zu quetschen und zu hoffen das du genug definiert
        hast.

        Auch zu den NOT NULL von Aqua noch eine Bemerkung, das solltest du
        wirklich nur auf NULL ändern wenn du genau weist was du tust, sonst
        handelst du dir möglicherweise Probleme ein damit. NULL bedeutet
        undefiniert, und da kann dann wirklich alles drinstehen und du
        hast ein Zusatzflag das du abfragen darfst ob das jetzt was sinnvolles
        ist oder NULL (uu tut das auch PHP bereits für dich).

        Gruss Daniela

        1. hi

          Was daran auffällt (mit ^ gekennzeichnet), ist, das du nicht nachname2
          sondern $nachname2 setzen willst, ansich nicht schlimm falls $nachname2
          den Spaltennamen enthält, scheint jedoch eher n Tippfehler zu sein.

          stimmt, das is n tippfehler.

          Ansonsten noch anzumerken, logo, datei und bild, sind die absichtlich
          leer? Neu zu setzen brauchst du übrigens nur die Felder die du auch
          ändern willst, also zb id nicht (ich glaube, Primärschlüssel kann
          man auch gar nicht ändern).

          die sind absichtlich leer, aber jenach user eingabe kann auch was drin sein.

          Dann solltest du prüfen ob es den Record mit der ID den du updaten
          willst überhaupt schon gibt, von der Fehlermeldung her nehm ich aber
          an, es ist der Syntaxfehler der ihn gestört hat.

          das mach ich, wollte hier nur platz sparen. sieht so aus:

          $sql="SELECT id FROM text WHERE id='$id';";
          $result=mysql_query($sql,$connect);

          if ($result) {
           $textsql="UPDATE
          } else {
           $textsql="INERT
          }

          Dein Datenbankdesign solltest du auch nochmal anschauen, das sieht nach
          viel Redundanz aus und dem Versuch mehrfach vorkommende Attribute
          zwanghaft in die Tabelle zu quetschen und zu hoffen das du genug definiert
          hast.

          wie meinst du das genau?

          gruss

          1. Hi Ralf

            stimmt, das is n tippfehler.

            Klappts denn wenn das korrigiert ist oder hast du immernoch
            die Fehlermeldung?

            die sind absichtlich leer, aber jenach user eingabe kann auch was drin sein.

            dann ist ja alles in Ordnung, syntaktisch ist das auf alle Fälle in Ordnung

            das mach ich, wollte hier nur platz sparen. sieht so aus:

            if ($result) {
            $textsql="UPDATE
            } else {
            $textsql="INERT
            }

            8-tung Insert und nicht Update falls das nicht nur abschreibfehler ist

            Dein Datenbankdesign solltest du auch nochmal anschauen, das sieht nach
            viel Redundanz aus und dem Versuch mehrfach vorkommende Attribute
            zwanghaft in die Tabelle zu quetschen und zu hoffen das du genug definiert
            hast.

            wie meinst du das genau?

            Es sieht einfach eher wie eine flache Tabelle aus als ne schöne
            normalisierte Datenbank. Je nach dem wie erweiterbar das sein
            soll und was du damit für Auswertungen machen willst wird das
            ein Problem werden. Ist nichts dringendes oder was nicht
            funktionieren wird sondern einfach nur Stil, Buchempfehlungen und
            vielleicht auch Links zu Datenbankdesign findest du im Archiv.

            Klappt es denn nun mit den Änderungen von vorher?

            Gruss Daniela

            1. hi

              Klappts denn wenn das korrigiert ist oder hast du immernoch
              die Fehlermeldung?

              nein

              if ($result) {
              $textsql="UPDATE
              } else {
              $textsql="INERT
              }

              8-tung Insert und nicht Update falls das nicht nur abschreibfehler ist

              Doch wieder n schreibfehler *g*

              Es sieht einfach eher wie eine flache Tabelle aus als ne schöne
              normalisierte Datenbank. Je nach dem wie erweiterbar das sein
              soll und was du damit für Auswertungen machen willst wird das
              ein Problem werden. Ist nichts dringendes oder was nicht
              funktionieren wird sondern einfach nur Stil, Buchempfehlungen und
              vielleicht auch Links zu Datenbankdesign findest du im Archiv.

              es sind felder eines formulares die gespeichert werden, als id nehm ich meistens die sessionid weil sie immer einzigartig ist, es sei denn es liegt eine anmeldung (login usw.) vor, dann nehm ich natürlich ne andere nummer (auto_increment aus der tabelle)

              die felder ruf ich in einem anderem script wieder ab, weil dort eine pdf erzeugt wird.

              aber zum problem, es ist immer noch da :-)

              gruss

              ralf

            2. Hi,

              hab n tippfehler (siehe eintrag von mel) nur hab ich damit n anderes problem.

              hab ja den code:

              $sql="SELECT * FROM text WHERE id='$id';";
              $result=mysql_query($sql,$connect);

              if ($result) {
               $textsql="UPDATE
              } else {
               $textsql="INSERT text
              }

              mysql_query($textsql,$connect);

              Nun ist es aber so das der Datensatz mit der id nicht existiert. Trotzdem ruft er den UPDATE string auf, wieso?

              gruss

              1. Hoi,

                $result=mysql_query($sql,$connect);

                [..]

                if ($result) {
                Nun ist es aber so das der Datensatz mit der id nicht existiert.
                Trotzdem ruft er den UPDATE string auf, wieso?

                Weil bei if($result) nur geprueft wird, ob in $result ein Wert ungleich
                0 steht. Und da $result eine Art Pointer ist, ist er natuerlich
                ungleich 0. Ergo musst du ueberpruefen, ob von dem Select Reihen
                zurueck gekommen sind:

                if(mysql_num_rows($result)) {
                  $textsql = "UPDATE...";
                }
                else {
                  $textsql = "INSERT ...";
                }

                Gruesse,
                 c.j.k

      2. Hallo,

        $textsql="UPDATE text SET id='$id', praxis='$sess_praxis', titel1='$sess_titel1',vorname1='$sess_vorname1', $nachname1='$sess_nachname1', facharzt1='$sess_facharzt1', titel2='$sess_titel2',vorname2='$sess_vorname2', $nachname2='$sess_nachname2', facharzt2='$sess_facharzt2', strasse='$sess_strasse', hausnr='$sess_hausnr', land='$sess_land', plz='$sess_plz', ort='$sess_ort', vorwahl1='$sess_vorwahl1', vorwahl2='$sess_vorwahl2', vorwahl3='$sess_vorwahl3', tel1='$sess_tel1', tel2='$sess_tel2', fax='$sess_fax', email='$sess_email', homepage='$sess_homepage', bank1='$sess_bank1', blz1='$sess_blz1', konto1='$sess_konto1', bank2='$sess_bank2', blz2='$sess_blz2', konto2='$sess_konto2', logo='$sess_logo', datei='$sess_datei', bild='$sess_bild' WHERE id='$id';";

        Hier definierst Du $textsql

        so ruf ich ihn auf
        mysql_query($text,$connect);

        Aber hier rufst Du nicht $textsql, sondern nur $text auf!

        Gruss, Mel

        1. stimmt, danke