[PHP & MySQL] Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given

brain_surgery
Huhu Leute.

Ich habe gerade ein Problem und komme nicht drauf, was da falsch sein könnte.
Und zwar bekomme ich folgende Fehlermeldung:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in ...

Ich verstehe aber nicht, wieso. Mein Skript sieht folgendermaßen aus:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
$query mysql_query("SELECT * FROM pferde_light") or die (mysql_error());
if (@mysql_num_rows($query) == 0)
{
    echo "Keine Pferde gefunden!";
    exit;
} else {
   while ($pferd mysql_fetch_assoc($query))
   {
        ...
   }

}


Das Skript (im while) wird trotz der Fehlermeldung ausgeführt. Was mir am Rästelhaftesten an der ganzen Sache vorkommt, ist dass trotz all den Vorkehrungen die ich gegen Fehler getroffen hab, trotzdem einer auftritt. Weder mysql_error() noch die if-Bedingung, die schaut ob keine Datensätze vorhanden sind, können etwas ausrichten.

Bitte um Hilfe, vielleicht übersehe ich da irgendetwas wichtiges?
;_;
lg, brain
Oli
Hi,

das Problem hatte ich selbst schon einmal und liegt offenbar in dieser Zeile:
php:
1:
$query mysql_query("SELECT * FROM pferde_light") or die (mysql_error());

PHP scheint nun auszuwerten:
php:
1:
2:
3:
$query mysql_query("SELECT * FROM pferde_light"//true (erfolgreich der Variablen zugewiesen)
 or
die (mysql_error()); //wird nicht ausgeführt, weil vorherige Bedingung true war

PHP interpretiert die Zeile also nicht so, wie es gewünscht war und fährt trotz fehlgeschlagenem mysql_query() fort.

Probiers mal so:
php:
1:
$query = (mysql_query("SELECT * FROM pferde_light") or die (mysql_error()));



LG,
Oli
brain_surgery
Vielen Dank für die Antwort!

Ich habe es ausprobiert, nun zeigt es mir nur mehr die Fehlermeldung der darauf folgenden if-Bedingung an ("Keine Pferde gefunden!").

Das heißt die mysql_num_rows scheinen jetzt 0 zu sein, obwohl sich nachweislich ein Datensatz in der Tabelle befindet.

Was mich ja wundert ist, dass es davor ja trotzdem klappte, das Skript in der while auszuführen, nur ging er scheinbar einmal zu oft in die Schleife hinein. (Ist zumindest meine Interpretation. Ich liege wahrscheinlich falsch, werde es eben mal mit mehreren Datensätzen probieren.)

lg, brain

EDIT: Alles klar, ich bin dumm, Fehler gefunden. Ich hatte nachher noch eine UPDATE-query, die ich ebenfalls in die Variable $query packte, wodurch die Ergebnisse der vorigen query verloren gingen.
Hat sich jetzt erledigt, es funktioniert einwandfrei! großes Grinsen