Henryk Plötz: MySQL: Zählen der Einträge klappt einfach nicht

Beitrag lesen

Moin,

Meinst du mit "Du musst das Ergebnis aus der Abfrage nehmen." das ich den Wert uweisen soll?
Ich habs mit:
$counter = mysql_query("SELECT COUNT(*) AS num_id FROM $db_table");
#$num_id  = mysql_num_rows($counter);
echo "$num_id";
probiert.
Er zeigt mir dann aber 0 (Null) an.

Das könnte nicht zufällig daran liegen dass du die einzige Zeile in der an $num_id ein Wert zugewiesen werden könnte, auskommentiert hast? (Jaja, es ist spät und so)

Also noch mal von vorne: Mit SELECT gibt die Datenbank immer eine Tabelle zurück in der die angefragten Daten enthalten sind. Das SELECT COUNT(*) ... gibt zwar nur einen einzigen Wert zurück, das wird dann aber einfach eine Tabelle mit nur einer Spalte und einer Zeile. Diese Tabelle geht jetzt von der Datenbank an den MySQL-Interfacecode im PHP-Interpreter und ist dort hinter der Ressource die du in $counter gespeichert hast verfügbar. Also: $counter ist nur eine Art Zeiger auf einen Speicherbereich in dem der PHP-Interpreter das Ergebnis der Anfrage (die genannte Tabelle) gespeichert hat. Deshalb kann schonmal nichts allzu sinnvolles rauskommen wenn du direkt mit $counter arbeitest.

Um jetzt an die Daten ranzukommen, musst du die PHP-Funktionen benutzen die dich die Daten aus diesem Speicherbereich auslesen lassen. Eine dieser Funktionen ist mysql_num_rows(), welches die Anzahl der Zeilen in der zurückgegebenen Tabelle angibt. Wie oben besprochen ist da aber immer nur eine Zeile drin, also bringt dir das auch nichts. Du brauchst so etwas wie mysql_fetch_row() welches dir jeweils eine Zeile aus dieser Tabelle als Array zurückgibt und sehr praktisch ist, wenn du vorher nicht weisst wieviele Zeilen es sein werden.

Da du hier aber weisst, dass es genau eine Zeile mit einer Spalte ist, kannst du auch direkter rangehen, zum Beispiel mit mysql_result(), welches dir nur den Inhalt einer Zelle gibt.

$num_id = mysql_result($counter, 0);
sollte tun was du willst. (Obwohl mich Matze da ein wenig verunsichert hat ob da nicht 1 statt 0 stehen müsste. In der Doku ist das nicht erwähnt und in den Kommentaren zur Doku wird 0 benutzt.)

--
Henryk Plötz
Grüße aus Berlin
~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~