Fehlermeldung: "Warning: mysql_fetch_assoc()..."
mathesen
- php
-1 mathesen2 Dennis0 mathesen
0 Johannes Zeller
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'> " . $dsatz["Name"] . " </a>";
echo "</td></tr>";
$anzahlMenue--;
}
}
menue("where auth='0'");
Zeile 8 ist: while ($dsatz = mysql_fetch_assoc($abfrageMenue))
Kann mir vielleicht jemand weiterhelfen.
mathesen
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
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.
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
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