Warning: mysql fetch array(): supplied argument is not a valid MySQL result resource

Aus VMS1 Tutorial

Dies ist eine alte Version. Zeitpunkt der Bearbeitung: 19:25, 24. Feb. 2011 durch Jpwfour (Diskussion | Beiträge).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Eine häufige Warnmeldung, wenn Ergebnisse einer MySQL-Datenbankanfrage ungeprüft verarbeitet werden und die Anfrage selber schon fehlerhaft war.

Vollständig hat die Meldung folgende Form:

Warning: mysql_fetch_array(): 
supplied argument is not a valid MySQL result resource 
in /pad/zur/php/datei.php on line XY

Debugging

Um die Ursache der Warnung zu ermitteln, benötigt man den Pfad der PHP Datei und die Zeilennummer jeweils aus der Warnung direkt abzulesen (im Beispiel oben hervorgehoben).

An der betreffenden Stelle findet sich häufig aber kein Hinweis auf den Auslöser, da die Funktion mysql_fetch_array() nur ein Ergebnis einer vorherigen Datenbankanfrage verarbeitet. Beispielsweise könnte die Zeile, in der die Warnungs ausgelöst wird, so aussehen:

$var = <|>mysql_fetch_array|>($erg);

Die Warnung besagt, das Argument der Funktion (im Beispiel: $erg) ist kein gültiges MySQL Ergebnis.

Warum es aber ungültig ist, dazu muss man die Stelle lokalisieren, an welcher $erg ein Wert zugewiesen wird, leider kann das überall vorher im Code sein!

Hat man es dann doch geschafft die betreffende Stelle zu finden, beispielsweise:

$erg = <|>mysql_query|>("SELECT col FROM table");

kann man den "eigentlichen" Fehler herausfinden, indem man sich die letzte MySQL Fehlermeldung direkt nach dieser Zeile ausgeben lässt:

<|>echo|> <|>mysql_error|>();
Persönliche Werkzeuge