Fehler bei mysql_fetch_object() und mysql_num_rows()

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

  • Fehler bei mysql_fetch_object() und mysql_num_rows()

    Hallo erstmal,
    ich habe folgendes prob:
    ich habe im netz dieses script gefunden:
    PHP-Code:
    <?php
    include("sessionhelpers.inc.php" ); // Einfügen der Datei "connect.php.inc"
    $result1 mysql_query("SELECT * FROM pns WHERE to_id = $loginid ORDER BY timestamp" ); // MySQL-Abfrage aus der Tabelle "pns"

    $anzahl mysql_num_rows($result1); // Zählen der Einträge
    echo "Du hast $anzahl PN's!"// Ausgeben, wieviele PN's man hat
    while($row mysql_fetch_object($result1)) { // Start: while-Schleife
    $date date("d.m.Y, h:i:s",$row->timestamp); // Datum ermitteln
    echo "<a href='show.php?id=$row->id&$row->subject>Lesen!</a> (Von: $row->from_user], Datum: $date)"// Ausgeben der Daten
    // Ende: while-Schleife
    ?>
    ich habe es schon angepasst, aber es taucht dieser fehler auf:

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /usr/export/www/hosting/funwars/pn/mail_in.php on line 5
    Du hast PN's!
    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /usr/export/www/hosting/funwars/pn/mail_in.php on line 7

    Was ist nicht richtig? ich finde den fehler nicht.
    bitte helft mir

  • #2
    Den Thread "Erst lesen: Posten von Problemen" hast du doch ganz bestimmt gelesen. Warum hast du die Hinweise dort nicht angewandt?
    [FONT="Helvetica"]twitter.com/unset[/FONT]

    Shitstorm Podcast – Wöchentliches Auskotzen

    Kommentar


    • #3
      falls du auf das mysql_error hinauswillst: vergessen^^, hab seingebaut und es ergibt:
      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 'ORDER BY timestamp' at line 1

      Kommentar


      • #4
        ..und nun?

        Guck mal auf mysql.com, was ORDER BY erwartet...
        Da fehlt irgendwie was..

        mfg

        Kommentar


        • #5
          falls du auf das mysql_error hinauswillst: vergessen^^, hab seingebaut und es ergibt:
          Schön, würdest du dir jetzt noch die Mühe machen, die Query auszugeben (und falls dann noch nötig hier zu posten?) Steht auch alles in den Regeln!

          Guck mal auf mysql.com, was ORDER BY erwartet... Da fehlt irgendwie was..
          Bullshit. Was soll denn da fehlen?

          DAVOR könnte/müsste der Fehlermeldung nach ein Wert fehlen. Würde mich zumindest nicht wundern.
          Wenn der Threadstarter in der Lage wäre, das Error-Reporting aufzudrehen (auch das steht in den Regeln) und die Query hier zu posten (bereits erwähnt), könnte man das auch mit Sicherheit sagen.

          Darüber hinaus wird er spätestens danach ein Problem mit den reservierten Wörtern bekommen. Steht im Manual unter entsprechendem Stichwort.

          Kommentar


          • #6
            @Tobiaz:

            Eigentlich dacht ich an ASC/DESC, aber danke für den Hinweis, dass man es nicht angeben muss.

            mfg

            Kommentar


            • #7
              Query:

              SELECT * FROM pns WHERE to_id = ORDER BY timestamp

              Nochmal die komplette Fehlermeldung: (mit errorreporting)
              Warning: ini_set() has been disabled for security reasons in /usr/export/www/hosting/funwars/pn/mail_in.php on line 6
              SELECT * FROM pns WHERE to_id = 2 ORDER BY timestampDu hast 1 PN's!Lesen! (Von: ], Datum: 31.07.2008, 09:14:45)


              Und der komplette code:
              PHP-Code:
              <?php
              /**
              * Debugging
              */
              error_reporting(E_ALL); #zeig alle Fehler
              ini_set('display_errors''1'); #sorgt dafür, dass überhaupt Fehler angezeigt werden

              include("sessionhelpers.inc.php" ); // Einfügen der Datei "connect.php.inc"
              $sql="SELECT * FROM pns WHERE to_id = $loginid ORDER BY timestamp";
              echo 
              $sql;
              $result1 mysql_query($sql)or die(mysql_error()); // MySQL-Abfrage aus der Tabelle "pns"

              $anzahl mysql_num_rows($result1); // Zählen der Einträge
              echo "Du hast $anzahl PN's!"// Ausgeben, wieviele PN's man hat
              while($row mysql_fetch_object($result1)) { // Start: while-Schleife
              $date date("d.m.Y, h:i:s",$row->timestamp); // Datum ermitteln
              echo "<a href='show.php?id=$row->id&$row->subject>Lesen!</a> (Von: $row->from_user], Datum: $date)"// Ausgeben der Daten
              // Ende: while-Schleife
              ?>

              edit: Geht jetzt! ich hatte einen fehler in der sessionhelkpers.inc.php.
              ABER,
              in der show.php wo man die pn lesen soll, gibt es die meldung:

              Catchable fatal error: Object of class stdClass could not be converted to string in /usr/export/www/hosting/funwars/pn/show.php on line 7

              hier der code:
              PHP-Code:
              <?php
              /**
              * Debugging
              */
              error_reporting(E_ALL); #zeig alle Fehler
              include("sessionhelpers.inc.php"); // Einfügen der Datei "connect.php.inc"
              $sql="SELECT * FROM pns WHERE id = ".$id." AND to_id = ".$loginid." ORDER BY timestamp LIMIT 1";
              echo 
              $sql;
              $result1 mysql_query($sql)or die(mysql_error()); // MySQL-Abfrage aus der Tabelle "pns"
              while($row mysql_fetch_object($result1)) { // Start: while-Schleife
              $date date("d.m.Y, h:i:s",$row->timestamp); // Datum ermitteln
              echo "<br>Von: $row->from_id | Für: $row->to_id | Datum: $date | Betreff: $row->subject<br><br>$row->text"// Ausgeben des Textes
              echo "<a href='new_mail.php?to=$row->from_id&subject=$row->subject'>Antworten</a>";
              // Ende: while-Schleife

              ?>
              was ist daran jetzt wieder falsch?(ich finde den fehler nicht) und echo sql;
              gibt nix aus
              Zuletzt geändert von Champ Wasili; 01.08.2008, 10:04.

              Kommentar


              • #8
                zu 1) Dir ist aber schon aufgefallen, wo der Fehler in der Query war, oder war das einfach Glück, dass du das Problem lösen konntest?

                zu 2)
                was ist daran jetzt wieder falsch?
                Ofensichtlich enthält schon wieder eine Variable nicht das, was du erwartest. Prüfe alle für die Query verwendeten Variablem mittels var_dump().

                und echo sql; gibt nix aus
                Ach ne? Welch ein Wunder, wenn das Script in Zeile 7 schon abbricht, kann es wohl kaum in Zeile 8 etwas ausgeben!

                Kommentar


                • #9
                  zu 1)est wars glück aber jetzt hab ichs herausgefunden, sodass das gesamte system funzt.


                  2)
                  hab ich. der fehler in diesem script war, das eine get variabel nicht als solche angesprochen wurde. als ich das
                  PHP-Code:
                  $_GET['id']
                  # anstatt
                  $id 
                  genommen habe, ging es Code:
                  PHP-Code:
                  <?php
                  /**
                  * Debugging
                  */
                  error_reporting(E_ALL); #zeig alle Fehler
                  include("sessionhelpers.inc.php"); // Einfügen der Datei "connect.php.inc"
                  $sql="SELECT * FROM pns WHERE id = ".$_GET['id']." AND to_id = ".$loginid." ORDER BY timestamp LIMIT 1";
                  $result1 mysql_query($sql)or die(mysql_error()); // MySQL-Abfrage aus der Tabelle "pns"
                  while($row mysql_fetch_object($result1)) { // Start: while-Schleife
                  $date date("d.m.Y, h:i:s",$row->timestamp); // Datum ermitteln
                  echo "<br>Von: $row->from_user | Für: $row->to_id | Datum: $date | <b>Betreff: $row->subject</b><br><br>$row->text"// Ausgeben des Textes
                  echo "<br><br><a href='new_mail.php?to=$row->from_id&subject=$row->subject'>Antworten</a>";
                  // Ende: while-Schleife

                  ?>
                  aber, warum wird die if anweisung dieses scripts ausgeführt, auch wenn $send nicht true ist?:
                  PHP-Code:
                  <form method="post" action="?send=true">
                  Zu ID: <input type="text" name="to_id"><br>
                  Betreff: <input type="text" name="subject"><br><br>
                  <textarea name="text"></textarea>
                  <input type="submit" value="Abschicken!">

                  <?php
                  if(isset($send) AND $send == true ); // Ist schon ein Inhalt eingefügt worden?
                  {
                  include(
                  "sessionhelpers.inc.php" ); // Einfügen der Datei "connect.php.inc"
                  $sql"INSERT INTO 
                  `pns` ( 
                  `id` , 
                  `to_id` , 
                  `from_id` , 
                  `from_user` , `show_from` , 
                  `show_to` , 
                  `text` , 
                  `timestamp` , 
                  `subject` )
                  VALUES (
                  '',
                  '
                  $to_id',
                  '
                  $loginid',
                  '
                  $name', 
                  'yes',
                  'yes',
                  '
                  $text',
                  UNIX_TIMESTAMP(),
                  '
                  $subject')
                  "
                  ;
                  $result mysql_query($sql) or die("Mail konnte nicht versendet werden!" ); // PN absenden
                  echo "Pn versendet!";
                  }
                  ?>
                  Zuletzt geändert von Champ Wasili; 01.08.2008, 19:51.

                  Kommentar


                  • #10
                    Jetzt lern doch mal selber zu debuggen! testausgabe von $send? Und? Bist du immer noch der Meinung, dass das nicht == true ist?

                    Kommentar


                    • #11
                      ich meinte beim ersten aufruf, da ist $send doch NICHT true, aber die if anweisung wird trotzdem ausgeführt. die testausgabe gibt natürlich erst etwas aus, nachdem ich auf abschicken geklickt habe!

                      Kommentar


                      • #12
                        die testausgabe gibt natürlich erst etwas aus, nachdem ich auf abschicken geklickt habe!
                        Also wenn das if wirklich bereits beim ersten Laden durchgeführt wird, dann müsste deine Meldung 'PN versendet' angezeigt werden
                        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


                        • #13
                          wird sie ja auch direkt beim firstload(siehe markierung im anhang)
                          Zuletzt geändert von Champ Wasili; 04.08.2008, 17:42.

                          Kommentar


                          • #14
                            mist man kann beim editieren keinen Anhang anfügen. Hier der Anhang(sry für doppelpost)
                            Angehängte Dateien
                            Zuletzt geändert von Champ Wasili; 04.08.2008, 22:04.

                            Kommentar


                            • #15
                              KANN oder will mir niemand helfen? woran könnte das leigen?
                              Hier nochmal eine prob zusammenfassung:
                              Die if-anweisung wird ausgeführt, auch wenn die bedingung NICHT erfüllt ist und es wird uach die bestätigung ausgegeben(pn gesendet)

                              Kommentar

                              Lädt...
                              X