mysql Ausgabe problem, supplied argument is not a valid MySQL result

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

  • mysql Ausgabe problem, supplied argument is not a valid MySQL result

    Hi,

    irgendwie will der mir die Daten nicht ausgeben
    (dbhost,user und pw habe ich hier gelöscht)
    Das Script wird mit mysqltest.php?userid=821 (für user Nr. 821) aufgerufen.Als erster wert ist userid defeniert, welcher nicht mit ausgegeben werden soll.

    Fehlermeldung beim aufruf:
    Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/www/web191/html/mysqltest.php on line 6
    Und wenn ich den mysql_fetch_array nehme (sowie an entsprechender stelle ausgabe umändere) , kommt dass gleiche nur mit dem Befehl.


    Habe das script aus einem tutorial raus kopiert und dann eben die tabellen/feldernamen usw. abgeändert und ein WHERE dazu gemacht wie es in einen anderen tutorial stand.

    PHP-Code:
    <?php

    $dbconnect
    =mysql_connect("SERVERADRESSE","USERNAME","PASSWORT");  
    $sql_befehl="SELECT `username`,`positive`,`neutrale`,`negative` FROM `bewertungen` WHERE id=`$userid`"//ohne WHERE sind das ALLE Datensätze
    $ergebnis=mysql_query($sql_befehl,$dbconnect);
    while(
    $satz mysql_fetch_row($ergebnis))
    {
       echo 
    "Username: ".$satz['1'];  //bei mysql_fetch_array wäre das $satz['username']
       
    echo "Positive: ".$satz['2'];  //bei mysql_fetch_array wäre das $satz['positive']
       
    echo "Neutrale: ".$satz['3'];  //bei mysql_fetch_array wäre das $satz['neutrale']
       
    echo "Negative: ".$satz['4'];  //bei mysql_fetch_array wäre das $satz['negative']
    }  
    ?>
    Im MySql Table "bewertungen" gibt es:
    userid,username,positive,neutrale,negative
    Davon ist userid als PRIMARY KEY .

    Ich habe allerdings 4 mysqls (usr_web191_1, usr_web191_2. usr_web191_3, usr_web191_4) von maximal 10 möglich auf meinem webspace.
    Die Daten sind in usr_web191_2
    Aber login per phpmyadmin geht nur über "web191".

    Ich weiß nun nicht ob und wie ich "usr_web191_2" da noch mit einsetzen muss oder ob der WHERE reicht.


    Was ich schon am anfang komisch fand, ist der Fehlende ; in der mysql_fetch_row zeile.
    Aber so war es im tutorial.
    Wenn ich diesen setze, wird der normale Text ( username: , positive: usw ) ohne den ausgabewert ausgegeben, vorweg aber der gleiche fehler wie oben.
    Also klappt die abfrage nicht.

    Oder soll ich es mit mysql_fetch_field() versuchen?



    Daten zum Server:
    Apache-Version: 2.2
    Php-Version: 5.2.4
    MySQL-Version: 5.0.51a


    Die gleiche Fehlerausgabe hatte auch ein anderer user der es hier im jahre 2003 geschrieben hat - und nacher keine weitere antwort mehr bekommen hat.
    Auf den Server wo ich bin gab es vor einigen monaten ebenfalls ein hacker angriff, wodurch mindestens sämtliche files mit "index" gelöscht wurden....


    Hoffe das ihr mir noch helfen könnt.
    Zuletzt geändert von thx-sound; 26.05.2009, 19:15. Grund: anderer fehler

  • #2
    PHP-Code:
    $ergebnis=mysql_query($sql_befehl,$dbconnect); 
    daraus solltest du mal ein
    PHP-Code:
    $ergebnis=mysql_query($sql_befehl,$dbconnect) OR die(mysql_error()); 
    machen, damit du siehst ob beim absender der Query auch funktioniert hat. supllied argument is not valid MYSQL result ist meist ein anzeichen dafür

    Kommentar


    • #3
      register_globals!!!

      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        1. http://www.php-resource.de/forum/sql...problemen.html
        2. Du benutzt beim WHERE die falschen Anführungszeichen. ` funktioniert NUR zum Escapen von Spaltennamen. Für Strings benutzt man " oder ', heißt WHERE user_id = "$user_id".

        Besser noch wäre: Du erkennst, dass $user_id auf jeden Fall ein integer werden muss, welchen man wiederum nicht escapen muss, und schreibst dann
        PHP-Code:
        $user_id intval($user_id)
        $sql "...WHERE user_id = " $user
        dann muss MySQL nämlich nicht den Integer-Wert erst als String einlesen und dann zurück zu int konvertieren, obwohl du sicher weißt, dass es ja auf jeden Fall ein integer sein muss.

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          Zitat von ghostgambler Beitrag anzeigen
          1. http://www.php-resource.de/forum/sql...problemen.html
          2. Du benutzt beim WHERE die falschen Anführungszeichen. ` funktioniert NUR zum Escapen von Spaltennamen. Für Strings benutzt man " oder ', heißt WHERE user_id = "$user_id".

          Besser noch wäre: Du erkennst, dass $user_id auf jeden Fall ein integer werden muss, welchen man wiederum nicht escapen muss, und schreibst dann
          PHP-Code:
          $user_id intval($user_id)
          $sql "...WHERE user_id = " $user
          dann muss MySQL nämlich nicht den Integer-Wert erst als String einlesen und dann zurück zu int konvertieren, obwohl du sicher weißt, dass es ja auf jeden Fall ein integer sein muss.

          Hi,

          PHP-Code:
          $user_id intval($user_id
          $sql "...WHERE user_id = " $user
          könte es sein das du da was verdreht hast (abgesehen vom fehlenden ; in der user_id zeile.

          Der wert "user" wird an das script übergeben.
          Die Spalte wo es in der sql "bewertungen" heißt "userid".
          Dort soll dann aus der Zeile mit dem übergebenen Wert "user" die Daten abgerufen werden

          So bekomme ich ein "no database selectet"


          Edit 14:57Uhr:
          Ich nehme an der Fehler ist folgender:
          Es wird nicht der DBName angegeben. Habe wie oben geschrieben 4 user.
          Der Table bewertungen ist in "[COLOR=Red]usr_web191_2[/COLOR]"

          Hat aber kein extra zugang.

          Kann mir jamand die korrekte login form sagen damit es geht?
          Zuletzt geändert von thx-sound; 25.05.2009, 15:02.

          Kommentar


          • #6
            Zitat von thx-sound Beitrag anzeigen

            Edit 14:57Uhr:
            Ich nehme an der Fehler ist folgender:
            Es wird nicht der DBName angegeben. Habe wie oben geschrieben 4 user.
            Der Table bewertungen ist in "[COLOR=Red]usr_web191_2[/COLOR]"

            Hat aber kein extra zugang.

            Kann mir jamand die korrekte login form sagen damit es geht?
            mysql_select_db

            Grundlagen!

            Kommentar


            • #7
              Hi,
              mit dem mysql select habe ich inzwischen auch schon von jemand anders.


              Hier mal das fertige script was Daten aus der mysql als mehrfarbiegen text in eine Grafik ausgibt:


              PHP-Code:
              <?php
              $bildbreite 
              468;
              $bildhoehe  17;
              $texthoehe  imagefontheight($textnr);
              $textnr 5;
              $trenner " / ";
              $anfang " ( ";
              $ende " ) ";
              $leer " ";

              $dbconnect=mysql_connect("MYSQLHOST","MYSQLUSER","MYSQLPASSWORT");
              mysql_select_db('MYSQLDATENBANK'$dbconnect);
              $sql_befehl="SELECT username, positive, neutrale, negative FROM bewertungen WHERE userid = " $user;
              $ergebnis=mysql_query($sql_befehl,$dbconnect) OR die(mysql_error());
              while(
              $satz mysql_fetch_array($ergebnis))
              {
                 
              $ausgabe1 =($satz['username']);
                 
              $ausgabe2 =($satz['positive']);
                 
              $ausgabe3 =($satz['neutrale']);
                 
              $ausgabe4 =($satz['negative']);
              }  


              $bildgroesse imagecreate ($bildbreite $bildhoehe);
              $textgroesse imagecreate ($bildbreite $texthoehe);

              $collector2 "$leer";
              $collector3 "$leer$ausgabe1";
              $collector4 "$leer$ausgabe1$anfang";
              $collector5 "$leer$ausgabe1$anfang$ausgabe2";
              $collector6 "$leer$ausgabe1$anfang$ausgabe2$trenner";
              $collector7 "$leer$ausgabe1$anfang$ausgabe2$trenner$ausgabe3";
              $collector8 "$leer$ausgabe1$anfang$ausgabe2$trenner$ausgabe3$trenner";
              $collector9 "$leer$ausgabe1$anfang$ausgabe2$trenner$ausgabe3$trenner$ausgabe4";

              $textp2 imagefontwidth($textnr) * strlen($collector2);
              $textp3 imagefontwidth($textnr) * strlen($collector3);
              $textp4 imagefontwidth($textnr) * strlen($collector4);
              $textp5 imagefontwidth($textnr) * strlen($collector5);
              $textp6 imagefontwidth($textnr) * strlen($collector6);
              $textp7 imagefontwidth($textnr) * strlen($collector7);
              $textp8 imagefontwidth($textnr) * strlen($collector8);
              $textp9 imagefontwidth($textnr) * strlen($collector9);



              $hintergrund_farbe  imagecolorallocate ($bildgroesse222222222);
              $text_farbe1        imagecolorallocate ($bildgroesse000);
              $text_farbe2        imagecolorallocate ($bildgroesse000);
              $text_farbe3        imagecolorallocate ($bildgroesse000);
              $text_farbe4        imagecolorallocate ($bildgroesse4613987);
              $text_farbe5        imagecolorallocate ($bildgroesse000);
              $text_farbe6        imagecolorallocate ($bildgroesse00255);
              $text_farbe7        imagecolorallocate ($bildgroesse000);
              $text_farbe8        imagecolorallocate ($bildgroesse25500);
              $text_farbe9        imagecolorallocate ($bildgroesse000);

              header ("Content-type: image/png");
              imagefilledrectangle ($bildgroesse00$bildbreite$bildhoehe$hintergrund_farbe);
              imagestring ($bildgroesse$textnr$textp21$ausgabe1$text_farbe2);
              imagestring ($bildgroesse$textnr$textp31$anfang$text_farbe3);
              imagestring ($bildgroesse$textnr$textp41$ausgabe2$text_farbe4);
              imagestring ($bildgroesse$textnr$textp51$trenner$text_farbe5);
              imagestring ($bildgroesse$textnr$textp61$ausgabe3$text_farbe6);
              imagestring ($bildgroesse$textnr$textp71$trenner$text_farbe7);
              imagestring ($bildgroesse$textnr$textp81$ausgabe4$text_farbe8);
              imagestring ($bildgroesse$textnr$textp91$ende$text_farbe9);

              imagepng ($bildgroesse);
              ?>
              Bild wird dann abgerufen über:
              bewertung.php?user=USERNUMMER




              Sind zwar 1-2 alternativen im code drinne, aber es macht ja nix.


              Danke an alle die irgendwie mitgeholfen haben jemand der kein php kann sowas zu basteln


              Gruss Stefan

              Kommentar


              • #8
                wenn du varaible $user nach wie vor per get überträgst, wirst du trotzdem probleme bekommen. siehe register_globals.

                peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #9
                  Zitat von thx-sound Beitrag anzeigen
                  Der wert "user" wird an das script übergeben.
                  Die Spalte wo es in der sql "bewertungen" heißt "userid".
                  Dort soll dann aus der Zeile mit dem übergebenen Wert "user" die Daten abgerufen werden
                  Ja, ein bisschen Mitdenken ist erlaubt

                  Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                  bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                  Wie man Fragen richtig stellt

                  Kommentar


                  • #10
                    Zitat von Kropff Beitrag anzeigen
                    wenn du varaible $user nach wie vor per get überträgst, wirst du trotzdem probleme bekommen. siehe register_globals.

                    peter
                    Hi, wenn du mir die fertige neue Zeile bzw Zeilen gibtst, kann ich das gerne machen/versuchen.


                    Den integer hat mir jemand der mir ein anderer wieder entfernt mit der endgültigen änderung.
                    Nach seiner änderung ging das script dann wie es sollte.
                    Hat aber selbst nur etwas erfahrung mit mysql (Programmiert eher Programme).

                    Gruss Stefan

                    Kommentar


                    • #11
                      mysql_num_rows(): supplied argument is not a valid MySQL result resource

                      Hi, nach dem nun mein eigentliches Bild aus mysql Text generierungscript funktioniert, wollte ich noch eine if abfrage machen falls der übergebene "user" Wert nicht existiert oder jemand nur den beispielcode mit "userid" an gibt.




                      Leider erhalte ich nun:
                      mysql_num_rows(): supplied argument is not a valid MySQL result resource........

                      sowie:
                      Warning: Cannot modify header information - headers already sent by (output started at /home/www/web191/html/bewertungtest7.php:65) in /home/www/web191/html/bewertungtest7.php on line 67 ‰PNG


                      Zeile 65 ist die if abfrage.


                      PHP-Code:
                      mysql_select_db($dbusername$dbconnect);
                      $sqlcheckabfrage mysql_query("SELECT * FROM $dbtable WHERE $dbsuchspalte = .$input.");


                      if (
                      mysql_num_rows($sqlcheckabfrage)==0)
                          {
                      header ("Content-type: image/png");
                      imagefilledrectangle ($bildgroesse00$bildbreite$bildhoehe$hintergrund_farbefehler);
                      imagestring ($bildgroesse$textnr$textp21$keininput$text_farbe1);
                      imagepng ($bildgroesse);
                          }

                      else
                           {  
                      $sql_befehl="SELECT $ausgabespaltename1$ausgabespaltename2$ausgabespaltename3$ausgabespaltename4 FROM $dbtable WHERE $dbsuchspalte = " $input;
                      $ergebnis=mysql_query($sql_befehl,$dbconnect) OR die(mysql_error());
                      while(
                      $satz mysql_fetch_array($ergebnis))
                      {
                         
                      $ausgabe1 =($satz[$ausgabespaltename1]);
                         
                      $ausgabe2 =($satz[$ausgabespaltename2]);
                         
                      $ausgabe3 =($satz[$ausgabespaltename3]);
                         
                      $ausgabe4 =($satz[$ausgabespaltename4]);
                      }  
                      header ("Content-type: image/png");
                      imagefilledrectangle ($bildgroesse00$bildbreite$bildhoehe$hintergrund_farbe);
                      imagestring ($bildgroesse$textnr$textp21$ausgabe1$text_farbe2);
                      imagestring ($bildgroesse$textnr$textp31$anfang$text_farbe3);
                      imagestring ($bildgroesse$textnr$textp41$ausgabe2$text_farbe4);
                      imagestring ($bildgroesse$textnr$textp51$trenner$text_farbe5);
                      imagestring ($bildgroesse$textnr$textp61$ausgabe3$text_farbe6);
                      imagestring ($bildgroesse$textnr$textp71$trenner2$text_farbe7);
                      imagestring ($bildgroesse$textnr$textp81$ausgabe4$text_farbe8);
                      imagestring ($bildgroesse$textnr$textp91$ende$text_farbe9);

                           } 
                      Danach endet das script korrekt.

                      ausgabespaltename ist auch korrekt...
                      Zuletzt geändert von thx-sound; 26.05.2009, 18:52.

                      Kommentar


                      • #12
                        Bitte mache jetzt nicht für jedes Detailproblem einen neuen Thread auf!
                        *zusammenführ*
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Hi, wenn du mir die fertige neue Zeile bzw Zeilen gibtst, kann ich das gerne machen/versuchen.
                          Das machst du schön selber. Und bitte lies vorher das hier durch. Mui importante!

                          Und das hier solltest du auch schleunigst lesen. Und beachten!

                          Peter
                          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                          Meine Seite

                          Kommentar


                          • #14
                            Zitat von Kropff Beitrag anzeigen

                            Und das hier solltest du auch schleunigst lesen. Und beachten!

                            Peter


                            Hat das überhaupt etwas damit zu tun:
                            mysql_num_rows(): supplied argument is not a valid MySQL result resource........

                            Oder ist es einfach nur der falsche mysql befehl um den wert zu ermitteln?
                            Allein das wäre schon mal eine VERNÜNFTIGE Aussage!


                            In diesem Fehler ding fehlen auch nach den fehlerhaften Beispielen die korrekten Beispiele wo dann steht: "so müßte es richtig lauten". besonders of wird diese und jene klammer vergessen/übersehen..


                            Und komme mir hier nicht mit irgend ein "Mui importante!".
                            Wenn ich für das fertige Script Geld bekommen würde, würde ich ein vernünftigen umfangreichen php kurs machen.
                            Aber da ich nix dafür bekomme, müssen dei sahcne aus tutorials und EINFACH formulierten beschreibungen reichen.


                            Dies Forum ist doch dazu da um anderen zu helfen. Also denen zu sagen was genau der Fehler ist wenn die nicht mehr weiter wissen wenn es nicht klappt mit dem was in tutorials ist.

                            Warscheinlich weißt du sogar was falsch ist und warum das nicht geht.

                            Kommentar


                            • #15
                              Zitat von thx-sound Beitrag anzeigen
                              Hat das überhaupt etwas damit zu tun:
                              mysql_num_rows(): supplied argument is not a valid MySQL result resource........

                              Oder ist es einfach nur der falsche mysql befehl um den wert zu ermitteln?
                              Allein das wäre schon mal eine VERNÜNFTIGE Aussage!
                              Sich allein schon mal klar zu machen, was die Meldung (übersetzt) aussagt, wäre sehr vernünftig ...

                              Die Funktion erwartet als Parameter eine gültige MySQL-Ergebnis-Kennung, aber du übergibst ihr keine solche.
                              Das ist natürlich i.a.R. ein Folgefehler - weil die Funktion, die zuvor eine solche liefern sollte, das nicht ordnungsgemäß machen konnte.

                              In diesem Fehler ding fehlen auch nach den fehlerhaften Beispielen die korrekten Beispiele wo dann steht: "so müßte es richtig lauten". besonders of wird diese und jene klammer vergessen/übersehen..
                              "Besonders oft wird von Anfängern, die sich nicht selber bemühen, wenigstens die Grundlagen der Syntax zu erlernen, erwartet, dass man sie ihnen bei jedem Pups-Problem noch mal einzeln erklärt."

                              Und komme mir hier nicht mit irgend ein "Mui importante!".
                              Wenn ich für das fertige Script Geld bekommen würde, würde ich ein vernünftigen umfangreichen php kurs machen.
                              Aber da ich nix dafür bekomme, müssen dei sahcne aus tutorials und EINFACH formulierten beschreibungen reichen.
                              Das ist "mui importante", weil es eines der absolut grundlegenden Dinge ist, wie PHP mit übergebenen Parametern umgeht.
                              Also komm du uns nicht mit "kommt mir nicht mit ..." - sondern beschäftige dich damit, verflixt noch mal.

                              Dies Forum ist doch dazu da um anderen zu helfen. Also denen zu sagen was genau der Fehler ist wenn die nicht mehr weiter wissen wenn es nicht klappt mit dem was in tutorials ist.
                              "Mit Tutorials arbeiten" heisst nicht, Code per Copy&Paste übernehmen, zufrieden sein, wenn's "funzt" - und andernfalls sofort anfangen, rumzujammern.

                              Mit Tutorials arbeiten, heisst dort gesagtes logisch nachvollziehen, und sich selber Gedanken über bestimmte Zusammenhänge machen.

                              Und vor allem heisst es nicht, sich damit herauszureden, dass man das ganze nicht gegen Bezahlung, sondern nur nebenbei macht - und das man deshalb fordern könnte, dass einem wirklich jeder Furz haarklein erklärt werden müsste und man hier quasi Privatsupport fordern kann.

                              Wenn du das machen willst, dann beschäftige dich auch damit, so dass du das nötige Grundlagenwissen erlangst, um das gewünschte umsetzen zu können.
                              Wenn nicht, dann lass' die Finger davon.

                              Warscheinlich weißt du sogar was falsch ist und warum das nicht geht.
                              Netter Versuch. Aber auf so billige Tricks fällt hier vermutlich keiner rein.
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X