mathesen: Fehlermeldung: "Warning: mysql_fetch_assoc()..."

Hallo zusammen,

ich habe irgendwo einen Fehler drin, welchen ich gerade nicht sehe / finde :-(
Auf meim Localhost läuft die ganze sache, nur online nicht so ganz...

Folgende Fehlermeldung kommt, wenn die Seite online ist:
"Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /srv/www/htdocs/web32/html/v3/ini_menue.php on line 8"

Die Datei ini_menue.php Sieht folgendermaßen aus:
function menue($select)
{
 $abfrageMenue = mysql_query("select * from links " . $select . " order by Pos asc");
 while ($dsatz = mysql_fetch_assoc($abfrageMenue))
 {
  echo "<tr><td>";
  echo "<a href='" . $dsatz["Name"] . ".php'>&nbsp;" . $dsatz["Name"] . "&nbsp;</a>";
  echo "</td></tr>";
  $anzahlMenue--;
 }
}
menue("where auth='0'");

Zeile 8 ist: while ($dsatz = mysql_fetch_assoc($abfrageMenue))

Kann mir vielleicht jemand weiterhelfen.
mathesen

  1. Okay,

    da sitzt man ne ewigkeit dran und sucht den Fehler und dann findet man ihn 2 min nachdem man einen Beitrag Gepostet hat...

    Also sorry für den Beitrag

    Gruß mathesen

    1. Hi mathesen,

      da sitzt man ne ewigkeit dran und sucht den Fehler und dann findet man ihn 2 min nachdem man einen Beitrag Gepostet hat...

      Unabhängig davon solltest du dir eine vernüftige Fehlerbehandlung überlegen - wenn du in das SQL Statement Variablen mit einbaust, solltest du das SQL-Statement erst mal zwischenspeichern und ausgeben lassen:

      // SQL Befehl zusammenbauen, auf die Variable  
      // $select sollte vorher bereites ein  
      // [link:http://php.net/mysql_real_escape_string@title=mysql_real_escape_string()] angewandt werden, um  
      // [link:http://php-faq.de/q/q-sql-injection.html@title=MySQL Injections] vorzubeugen, weiterhin sollte  
      // man [link:http://php-faq.de/q/q-sql-select.html@title=nicht SELECT * verwenden].  
      $sql = "SELECT  
                foo,  
                bar  
              FROM  
                tabelle  
              $select  
              ORDER BY  
                foo ASC";  
      // und zur Kontrolle ausgeben, wer weiß, was wir uns  
      // da zusammengesetzt haben!  
      echo $sql;  
      // Query absetzen  
      $result = mysql_query($sql);  
      // Bei einem Fehler liefer [link:http://php.net/mysql_query@title=mysql_query()] false zurück,  
      // was wir abfangen wollen  
      if($result === false) {  
        // Bei einem Fehler lassen wir uns dann auch noch die  
        // Fehlermeldung von [link:http://php.net/mysql_error@title=mysql_error()] ausgeben  
        echo "Es ist ein Fehler aufgetreten: ";  
        echo mysql_error();  
      }
      

      In einer Produktiv-Umgebung sollten SQL-Code und Fehlermeldung dann natürlich nicht ausgegeben, sondern in eine Datei geloggt werden.

      Also sorry für den Beitrag

      Macht ja nichts - aber du darfst hier gerne auch noch schreiben, _was_ denn jetzt genau schief gelaufen ist, dadurch kannst du Leuten die durch eine Archivsuche später auf deinen Beitrag stoßen weiterhelfen!

      MfG, Dennis.

      1. Nun,

        ich habe im Livesystem Vergessen in einer Tabelle ein feld einzufügen. Und daran ist dann die ganze geschichte auch gescheitert.
        Eigentlich ein fehler den man nicht machen sollte :D

        Gruß
        mathesen

    2. Hallo mathesen,

      da sitzt man ne ewigkeit dran und sucht den Fehler und dann findet man ihn 2 min nachdem man einen Beitrag Gepostet hat...

      Also sorry für den Beitrag

      Dafür brauchst du dich nicht zu entschuldigen. Aber du solltest hinterher auch posten, wo der Fehler lag. Alle Postings werden archiviert und wenn man jemand ein ähnliches Problem hat, hilft ihm dieser Thread so nicht weiter.

      Schöne Grüße,

      Johannes