Warning: mysql fetch array(): supplied argument is not a valid MySQL result resource
Aus VMS1 Tutorial
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|>();