Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Kein Ergebnis mit fetch() bei zweiter Query

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Kein Ergebnis mit fetch() bei zweiter Query

    Hallo!
    Ich habe folgendes Problem: Ich schicke nacheinander zwei Queries an eine DB. Jede für sich funktioniert - wenn ich aber beide nacheinander abschicke, liefert die zweite kein Ergebnis. Woran kann das liegen?
    Hier der Code, um den es geht:

    PHP-Code:
    // erste Query; Ergbnis wird richtig ausgegeben

        
    $query="SELECT astat_name FROM tblMAAufStatus ".
               
    "WHERE astat_id=".$lst_status
        
    $result=$mysqli->prepare($query);
        
    $result->execute();
        
    $result->bind_result($astat_name);
        
    $result->fetch();
        echo 
    $lst_status."   ".$astat_name;

    // zweite query; ist syntaktisch richtig (Kontrolle mit echo)
        
        
    $query_auf="SELECT auf_id, auf_datumerfassung, ".
                   
    "auf_beschreibung FROM tblMAAuftrag ".
                   
    "WHERE astat_id_f=".$lst_status.
                   
    " ORDER BY auf_datumerfassung DESC";

        echo 
    $query_auf;
            
        
    $result_auf=$mysqli->prepare($query_auf);
        
    $result_auf->execute();
        
    $result_auf->bind_result($auf_id,$auf_datumerfassung,
                                         
    $auf_beschreibung);
        
    // Es wird kein Ergebnis angezeigt
    // (erscheint aber, wenn die erste query auskommentiert wurde)
        
        
    while ($result_auf->fetch()) {
        echo 
    $auf_id.", ".$auf_datumerfassung.", ".$auf_beschreibung."<br>";
        } 
    Danke schon mal für jeden nützlichen Hinweis!

    MfG
    A*


  • #2
    mach doch mal ein free_result zwischendrin.
    http://php.net/manual/en/mysqli-result.free.php

    Kommentar


    • #3
      Hallo!
      Ich habe verschiedene Varianten ausprobiert:

      mysqli_free_result($result);
      oder
      mysqli_free_result($result_auf);
      oder
      $result->free();
      oder
      $result_auf->free();

      Hat leider alles nichts gebracht. Wenn ich die erste Query nicht auskommentiere, wird das Ergebnis der zweiten nach wie vor nicht angezeigt.

      MfG
      A*

      Kommentar


      • #4
        sorry scheint auch ein scheiss typ gewesen zu sein
        http://stackoverflow.com/questions/2...lose-free-both

        also versuchs doch mal mit multiquery?
        http://stackoverflow.com/questions/1...mysqli-queries

        naja, ich halt mich lieber raus

        Kommentar


        • #5
          Hallo!
          Der zweite von Dir angegebene Link ist ja sehr interessant, scheint aber auf mein Problem nicht zuzutreffen, weil ich nicht zwei Queries mit einem execute absetzen will, sondern nacheinander mit zwei executes.
          Trotzdem ist der Gedanke aber schon mal hilfreich, dass es offenbar Probleme bereitet, zwei Queries auf einer php-Seite abzusetzen? Kann mir jemand was dazu sagen?

          MfG
          A*

          Kommentar


          • #6
            http://php-de.github.io/jumpto/leitfaden/

            Entweder ist das error_reporting/display_errors zu niedrig eingestellt oder im Ergebnis des ersten Queries ist ungültier HTML Code enthalten (Quelltext anezigen lassen).

            Kommentar


            • #7
              Hallo!
              Sich den Quellcode anzusehen, war schon mal ein guter Hinweis. (Hätte ich auch selber drauf kommen können). Dort war zu sehen, dass der Quellcode nach der Ausgabe der Query mit echo (s.o.) abbricht. Daraufhin habe ich das jetzt so eingegrenzt:

              PHP-Code:
                  $query_auf="SELECT auf_id, auf_datumerfassung, ".
                             
              "auf_beschreibung FROM tblMAAuftrag ".
                             
              "WHERE astat_id_f=".$lst_status.
                             
              " ORDER BY auf_datumerfassung DESC";

                  echo 
              $query_auf;
                  echo 
              "1";    
                  
              $result_auf=$mysqli->prepare($query_auf);
                  echo 
              "2";    
                  
              $result_auf->execute();
                  echo 
              "3";
                  
              $result_auf->bind_result($auf_id,$auf_datumerfassung,
                                                   
              $auf_beschreibung);
                  echo 
              "4"
              Auf dem Bildschirm erscheint daraufhin:

              SELECT auf_id, auf_datumerfassung, auf_beschreibung FROM tblMAAuftrag WHERE astat_id_f=1 ORDER BY auf_datumerfassung DESC12

              d.h. das execute() wird nicht ausgeführt. Kann damit jemand was anfangen? Ich sag's nochmal: Es wird definitiv richtig ausgeführt, wenn ich die erste Query auskommentiere. Es muss also was mit den zwei Queries zu tun haben ...!??

              MfG
              A*

              Kommentar


              • #8
                Hallo!
                Es muss etwas mit der objektorientierten Schreibweise zu tun haben. Ich habe nämlich auch schon anderen php-Code geschrieben, wo ich 5 (!) Queries auf einer Seite ausführe - dort allerdings mit mysql statt mit mysqli und in der prozeduralen Schreibweise:

                PHP-Code:
                $result=mysql_query($query);
                $data=mysql_fetch_row($result); 
                Nun wollte ich gerne auf die "modernere" objektorientierte Schreibweise umsteigen und dann funktioniert es nicht. Kann mir jemand sagen, was an dem Code falsch ist (siehe ganz oben im ersten Posting!).

                MfG
                A*

                Kommentar


                • #9
                  Hallo Leute! Ich zähle auf Euch!
                  Kann mir wirklich keiner sagen, wie ich mit der OO-Schreibweise mehrere Queries nacheinander absetzen und auswerten kann??

                  MfG
                  A*

                  Kommentar


                  • #10
                    haste eigentlich irgendwo die rückgabewerte gecheckt, die fehler ausgeben lassen, das error reporting hochgedreht?

                    dann poste doch bitte mal die fehlermeldung.

                    btw:

                    fand ich als ich was in die suchmaschine getippt hab:

                    http://stackoverflow.com/questions/9...hp-with-mysqli

                    zudem : pushen ist gar nicht nett.

                    Kommentar


                    • #11
                      Hallo!
                      Ich seh' mir das morgen nochmal an.
                      Hoffentlich krieg ich's dann mit Hilfe des Links von Dir raus.
                      Danke erst mal.

                      MfG
                      A*

                      PS: Ohne "Hallo!" und Unterschrift ist auch nicht nett

                      Kommentar


                      • #12
                        Leute,
                        das daaaarf ja wohl nicht wahr sein. Ich habe's jetzt gelöst! Und zwar dank dieses Hinweises:
                        http://www.kumarisoft.de/tipps-und-t...n-command-now/
                        Komplett habe ich nicht verstanden, was dort gesagt wird - aber es ist wohl so: Meine erste Query liefert als Ergebnis nur einen einzigen Datensatz. Den habe ich mit fetch abgefragt. So weit ok. Nun heißt es aber in dem o.g. Beitrag, dass mysqli zusätzlich zu dem einen Datensatz noch irgendwas anderes mitliefert. Und das muss explizit abgefragt werden!!
                        Wenn man das Ergebnis der Query mit while(... fetch) abfragt, tritt dieser Effekt nicht auf, weil dann dieser ominöse letzte Datensatz mit abgefragt wird.
                        Ich habe nun hinter das fetch, mit dem ich den gesuchten Datensatz abfrage einfach noch ein weiteres "blind-fetch" gesetzt - und siehe da - alles funktioniert. Das ist schon verrückt!

                        MfG
                        A*

                        Kommentar


                        • #13
                          endlich die fehlermeldung gefunden? freut mich.

                          Kommentar

                          Lädt...
                          X