Sven Rautenberg: (MySQL)

Beitrag lesen

Moin!

ich hab das Problem, dass diese Abfrage nicht zu funktionieren scheint.
Ich hab keinen blassen Schimmer warum:

Regel Nummer Eins bei Datenbankabfragen: Die Datenbank abfragen, ob sie nicht vielleicht einen Fehler produziert hat, weil deine Abfrage falsch war.

mysql_db_query() bzw. auch mysql_query() liefern entweder eine MySQL-Ressource zurück, wenn alles geklappt hat, oder false, wenn die DB einen Fehler meldet.

Folglich mußt du das Ergebnis von mysql_query() auf false prüfen und den Fehler abfangen, zumindest aber ausgeben.

In Schnellschreibweise zum Fehlerausgeben:

$abfrage = "select * from inv_pc AND kategorie = 'S'";

$erg = mysql_db_query($dbname,$abfrage,$verbindung) or die("Fehler bei der Abfrage: $abfrage. <br>MySQL meldet: ".mysql_error();

$anz = mysql_num_rows($erg);
while($row = mysql_fetch_array($erg)) {
 extract($row);
}

Ich kann sicherstellen, dass Sätze gefunden werden, da $anz den Wert 37 erhält (= 37 Sätze gefunden) und die Eingabe der Abfrage in der SQL-Box vom phpmyadmin zeigt mir auch die 37 Sätze an.

Dass du hier einen Fehler eingebaut hast, wurde geklärt (WHERE fehlte). Die Tatsache, dass du trotzdem Daten kriegst, dürfte sich daraus erklären, dass die Variablen unter Umständen noch alte Werte enthielten. Deshalb: Immer den DB-Erfolg prüfen! Ansonsten kann man sich auf nachfolgende Ergebnisse nicht mehr verlassen.

Trotzdem erhalte ich beim obigen Script-Teil die Fehlermeldung,
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ...

Das ist in 99,9% der Fälle ein Zeichen, dass die SQL-Abfrage einen Fehler liefert, weil das query-Ergebnis dann keine Ressource, sondern der booleansche Typ "false" ist.

- Sven Rautenberg

--
"Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
(fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)