13.03.2010

Warning: mysql_fetch_array(): supplied argument is not a valid mysql result resource

Das PHP Logo
Suchmaschinen sind schon komische Dinger: Vor schon einiger Zeit, nach einem Server-Umzug, trat in meinem Forum dieser Fehler auf. Warum genau weiss ich nichtmehr, jedenfalls habe ich es korrigiert.
Google hat in dieser Zeit offensichtlich das Forum indiziert und sich die MySQL-Fehlermeldung auf jeder Seite gemerkt.
Inzwischen ist der Fehler schon lange behoben, sogar das Forum gibt es nicht mehr, trotzdem kommen immer wieder Leute auf meine Seite, die nach irgendwas mit warning: mysql_fetch_array(): supplied argument is not a valid mysql result resource suchen.

Nun gut, damit die Besucher nicht verwirrt vor einer Fehlerfreien Seite stehen ; ), schreibe ich mal einen kleinen Artikel darüber.

Hilfe zur Fehlermeldung

Falls du über eine Suchmaschine hier gelandet bist, hast du wahrscheinlich beim Aufsetzen/Entwickeln/Betrieb einer Website die Fehlermeldung warning: mysql_fetch_array(): supplied argument is not a valid mysql result resource bekommen und suchst Hilfe.
Die schlechte Nachricht dabei: Diese Fehlermeldung ist so allgemein, dass ich dir keine konkrete Lösung anbieten kann. Was relativ sicher ist: Du hast einen Fehler in der MySQL-Query.

Was du machen kannst: Wenn du dich ein wenig mit PHP auskennt bzw. das Web-Projekt eh selbst programmierst, sieh dir die angegebene PHP-Datei und Zeilennummer in der Fehlermeldung an. Wenn durch das reine Betrachten des Quellcodes kein Fehler ausfindig gemacht werden kann, versuch mal nach dem Befehl mysql_query(...); noch echo mysql_error(); auszuführen (Oft wird auch ein Konstruckt wie mysql_query(...) or die(mysql_error());) verwendet, um das Script nach auftreten des Fehlers sofort zu beenden.)
Wenn du nun die betreffende Seite nochmal aufrufst, solltest du eine etwas nützlichere Fehlermeldung erhalten.
Auch nützlich kann es sein, sich den ersten Parameter von mysql_query ausgeben zu lassen. Steht dort z.B. mysql_query($sql);, dann lass dir mal mit echo $sql; den Query-String ausgeben.
Übergibst du z.B. die id mit einer PHP-Variable, diese ist aber aufgrund eines Fehler leer, könnte ein Teil der Query so aussehen: ...WHERE id= AND..., da nach dem = ein Wert und nich AND folgen sollte, wäre das ein typischer Fehler.

Nun, vielleicht hat das ja dem ein oder anderen PHP-Programmier-Anfänger geholfen. : )
Solltest du ein fertiges System aufgesetzt und keine Ahnung vom Programmieren haben, lass die PHP-Dateien lieber in ruhe und beschreibe dein Problem so detailliert wie möglich in einem passenden Forum.

mysql_fetch_array();

mysql_fetch_array habe ich anfangs auch oft benutzt, bis mir aufgefallen ist, dass es relativ unsinnig ist.
Alternativen:
mysql_fetch_row gibt das Ergebnis in einem normalen Array durchnummeriert zurück (0, 1, 2,...).
mysql_fetch_assoc gibt das Ergebnis als assoziatives Array zurück (Sprich mit den Feldnamen z.B. 'id', 'name',...).

mysql_fetch_array hingegen gibt beides gleichzeitig zurück, was man in den seltensten aller Fälle benötigt. mysql_fetch_array hat dadurch wahrscheinlich auch einen etwas höheren Speichverbrauch, was wohl meist vernachlässigbar, aber eben auch unnütz ist.

Einen Kommentar abgeben

*
*
 
*
 

© 1999 - 2012 by Steffen HamannImpressum · Kontakt