Not a valid MySQL result resource?

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

  • Not a valid MySQL result resource?

    Hallo!

    Ich arbeite grade an einer Galerie für das Projekt das ich grade mache.

    Nun ist mir aber bei einer simplen Anweisung folgendes passiert:

    Ich öffne das Script und die Daten (sprich die Statistiken) der Galerie werden aus der einer MySql Datenbank ausgelesen. Alle Daten die ich per SELECT Anweisung ausgewählt hab werden auch korrekt angezeigt. Aber darunter findet sich immer eine Warnung wieder:

    Warning: mysql_fetch_object(): 13 is not a valid MySQL result resource in /home/stefan/public_html/project/galerie/includes/start.php on line 20

    Ich weiß, irgendwie kriegt der eine Ungültige Ergebnistabelle. Aber es werden doch alle Daten angezeigt?

    Hier mal die Ergebnistabelle:

    $res = mysql_query("SELECT galleries.id as gid , galleries.name as gname, galleries.visits as gvisits ,galleries.datum as datum FROM galleries order by galleries.datum desc limit $start, $gallerien_pro_seite ") or die(mysql_error());

    Die Variablen $start und $gallerien_pro_seite betragen im Normalfall 1 und 5.

    Im Moment gibt es eine Zeile in der Tabelle. Liegt es daran, dass ich angebe, dass mehr Daten abgeholt werden sollen als existieren?

    Danke für die Hilfe,

    Click
    Zuletzt geändert von Click; 20.08.2006, 22:57.
    Du kannst jeden Tag wie deinen letzten leben, du musst nur jeden Tag das Gleiche tun.

    Denk' mal drüber nach!

  • #2
    Brich bitte mal den Code um, damit man nicht meterweise nach Rechts scrollen muss.
    Deine Tabelle scheint easy_galleries zu heissen, du versuchst aber Felder von galleries mit deinen Alias zu verknüpfen.
    Ich glaube ned ,dass dies gewollt ist.

    Gruss

    tobi
    EDIT:

    In der Zwischenzeit die Codebreite verkleinert --> sehr vorbildlich


    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Original geschrieben von jahlives
      Brich bitte mal den Code um, damit man nicht meterweise nach Rechts scrollen muss.
      Hab ich auch gedacht, als ich meinen eigenen Post gesehen hab, sorry.

      Wegen den Tabellen.

      Nein, daran liegt es nicht. Ich habe den Quelltext für das Forum gekürzt, und die unwichtigen sachen weggelassen nur beim letzten teil der select abfrage vergessen der prefix wegzunehmen. Änder ich sofort
      Du kannst jeden Tag wie deinen letzten leben, du musst nur jeden Tag das Gleiche tun.

      Denk' mal drüber nach!

      Kommentar


      • #4
        (A) The offset of the initial row is 0 (not 1):


        (B) Dass es richtig angezeigt wird, wenn mysql_fetch_object eine Fehlermeldung gibt,
        scheint nicht vorstellbar. Vielleicht zählst Du die anzahl mysql_fetch_object Aufrufe, anstatt einer while-Schleife, und liest so über das Ende des result set.
        Zuletzt geändert von jhaase; 20.08.2006, 23:30.

        Kommentar


        • #5
          @Click
          Testest du lokal ? Wenn ja dann mach doch mal die MySql Konsole auf und schicke die Anfrage mal so. Sollte dir sofort anzeigen, ob etwas gefunden wurde oder ned...
          Wenn ich mir deine Code so anschaue dann musst die Anfrage eingentlich etwas zurückgeben. Du machst ja nach der Anfrage ein die(mysql_error()) und wenn die Query nicht akzeptiert würde müsste eine Meldung nach dem Motto: You got a problem in your query at Pos irgendwat
          Erst das mysql_fetch führt also zum Fehler. Schreib mal nach der Query ein var_dump($res) und schau dir den Typ der Var an. Ist's eine MySql Ressource ?

          Gruss

          tobi
          Zuletzt geändert von jahlives; 20.08.2006, 23:37.
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            O.K. Danke für die Tipps.

            Da ich Lokal teste, hab ich es in der Konsole mal aufgerufen.

            Mit den Werten LIMIT 1, 5 hat es nicht geklappt, aber mit LIMIT 0, 5, die auch im Script per _GET empfangen worden sind.

            Wenn ich die while Schleife rauslasse und nur
            PHP-Code:
            $line mysql_fetch_object($res
            schreibe, bekomme ich meinen Datensatz, ohne weitere Warnungen.

            Also ich denke ich kann davon ausgehen, dass die Warnung zu Stande kommt weil ich angegeben hab, dass er alles zwischen 0 und 5 abholen soll, obwohl nur ein Datensatz vorhanden ist?

            Das kann aber auch nicht ganz sein, denn wenn ich in der SELECT anweisung nur LIMIT 1 setze, gibt er die Warnung auch aus.

            Hat jemand ne Idee worans dann liegt?

            Danke für die Tipps,
            Click
            Du kannst jeden Tag wie deinen letzten leben, du musst nur jeden Tag das Gleiche tun.

            Denk' mal drüber nach!

            Kommentar


            • #7
              Original geschrieben von Click
              Hat jemand ne Idee worans dann liegt
              Das liegt an deinem fehlerhaften while-Operator, falls es überhaupt nicht eine for-Bedingung ist. Du musst von 0 bis 4 abholen, wenn Du limit 0,5 angibst. Zur Erklärung von 0 bis 4 sind es 5,0 Zahlen, nämlich:
              0
              1
              2
              3
              4


              PS: poste mal deine for-Anweisung b zw. deinen while-Block, damit man (Dir)raten kann.

              PPS Du hast vermutlich eine komische While-Schleife, wenn Du von 0..5 (richtig: von 0..4) abholst, wenn es nur eine Zeile hat. So programmiert man nicht.
              Zuletzt geändert von jhaase; 21.08.2006, 12:02.

              Kommentar


              • #8
                Ja schon... aber irgendwie versteh ich das ned ganz.

                Mein while Befehl ist einfach:
                PHP-Code:
                while($line mysql_fetch_object($res)) 
                ja...
                also des versteh ich jetzt ned ganz was das mit den von 0, 4 zu tun hat.
                Du kannst jeden Tag wie deinen letzten leben, du musst nur jeden Tag das Gleiche tun.

                Denk' mal drüber nach!

                Kommentar


                • #9
                  zeig mal die ganze Schleife, angefangen vom mysql_query bis über den Schluss der Schleife.

                  Kommentar


                  • #10
                    Original geschrieben von Click
                    Ja schon... aber irgendwie versteh ich das ned ganz.

                    Mein while Befehl ist einfach:
                    PHP-Code:
                    while($line mysql_fetch_object($res)) 
                    ja...
                    also des versteh ich jetzt ned ganz was das mit den von 0, 4 zu tun hat.
                    while du angibst, du holst mit mysql_fetch_object von 0 bis 5 ab. Woher hast Du das?

                    Kommentar


                    • #11
                      Ich hab den Fehler schon gefunden.

                      Das Script basierte auf einem Teilscript was ich bekommen habe...
                      Was ich jedoch übersehen hab: In der while schleife wird eine Datei inculded, in der der Befehl mysql_free_result($res) aufgerufen wird -.-

                      Befehl entfernt und es geht (war ja auch zu erwarten).

                      Ich frag mich bloß wie man drauf kommt so etwas in die Schleife zu includen O.o

                      Naja jetzt funktionierts, trotzdem danke für eure Hilfe
                      Du kannst jeden Tag wie deinen letzten leben, du musst nur jeden Tag das Gleiche tun.

                      Denk' mal drüber nach!

                      Kommentar

                      Lädt...
                      X