fehler in SQL-Abfrage? select count()
-
Also ich setze in nem kleinen Forum folgende Abfrage ab, um herauszubekommen, wieviele Einträge sich hierarchisch unter einem Eintrag befinden. Hierzu hab ich die rootID in meiner Tabelle posts.
im Terminal liefert mir die Abfrage
SELECT COUNT(postID) 'cnt' FROM posts WHERE rootID = 5;
ein richtiges Ergebnis. Die Tabellenspalte die ich bekomme heißt auch cnt. Im PHP sieht das so aus :
$c = mysql_query ("SELECT COUNT(postID) 'cnt' FROM posts WHERE rootID = ".$postID); $cnt = mysql_fetch_object($c);
Hier krieg ich nen "Resource ID" irgendwas, wenn ich $cnt->cnt ausgebe.
Bau ich die erste Zeile um:
$c = mysql_query ("SELECT COUNT(postID) 'cnt' FROM posts WHERE rootID = ".$postID) or die (mysql_error());
Bekomme ich nicht nur die Fehlermeldung 1, sondern kann auch problemlos auf
$cnt->cnt zugreifen. Hier steht dann auch der richtige Wert.
Allerdings sieht meine Ausgabe nun immer so aus, dass ich erst die 1 vom die(?) und anschließend die Anzahl der Einträge bekomme..Soo, so weit zu dem, was ich hab.
Hat da wer ne Idee??(will noch dazu sagen, dass ich sonst eher selten php nutze, nu musste es aber eben mal sein..)
-
Hm, verstehe ich auch nicht so ganz - aber versuch's mal so:
SELECT COUNT(postID) [b]AS[/b] 'cnt' FROM ...
-
in deinem Fall solltest du immer einen Fehler bekommen.
SELECT count() cnt sind 2 verschiedenen Spalten die eigentlich zurück gegeben werden sollen.
Wenn cnt nicht existiert dann gits Fehler.Lösung von Flenders oder
SELECT count() , cnt
-
das 'cnt' soll nur den Kopf der ersten Spalte umbenennen. sie wird dann nicht mehr als count(postid) sondern als cnt ausgegeben.
Das mit dem AS probier ich mal.
würde mich aber wundern..
-
Nicht Probieren sondern wundern. Du kannst übrigens auch
Select count(*) schreiben da du die Anzahl der Datensätze willst wo rootID = ".$postIDÜbersetzung:
Gib mir die Anzahl Datensätze wo das Feld rootID den Inhal X entspricher. Gibs aber die Anzahl ALS cnt aus.
Und hier ist nun as AS drin.
Du verwechselst das vielleicht mit
SELECT count(*) from posts p where .......
hier kann man dann alle weiteren Spalten mit p. ansprechen also
SELECT p.* from posts p where WHERE p.rootID = XY
-
AAARGHH!!!
Hab mir grade nochmal den Code mit jemandem angesehen..
Die Zeile vor dem mysql_query ist nen echo und als Abschluß hab ich kein Semikolon gehabt, sondern nen Komma..
Tjoaaa.. so kommts, wenn man nich aufpassen tut..