Henryk Plötz: Problem mit "SELECT COUNT('xy')..." im query

Beitrag lesen

Moin

$query = "SELECT COUNT('id') AS irgendwas FROM user";
mysql_num_rows($query); // Das ergibt Mist in der Art von "... is not a result ressource"
echo $irgenwas // Das ergibt den Wert von $irgenwas und evt. einen Syntax-Error wegen eines fehlenden ;

AS ist nur dafür da die Ergebnisse zu benennen damit du dich später darauf berufen kannst. Beispiel SELECT hallo FROM bla WHERE hallo='ha' und SELECT hallo AS huhu FROM bla WHERE huhu='ha' geben die gleichen Ergebnisse. Das funktioniert auch mit Gruppenfunktionen, wie dieses Beispiel aus der MySQL-Hilfe zeigt: SELECT user, MAX(salary) AS sum FROM users GROUP BY user HAVING sum>10 welches dem Maximalgehalt eines Users den Alias sum (über den Sinn dieser Query könnte man jetzt streiten :) zuordnet und den dann nochmal hinten verwendet.
AS ist also erst mal nur für deine SQL-Queries interessant und nicht für die Sprache aus der du die Queries auslöst. Weiterhin werden die mit AS zugewiesenen Aliase auch bei der Ausgabe benutzt. Auf der MySQL-Kommandozeile steht also (bei der zweiten Query meines ersten Beispiels) huhu über der Spalte in der Ausgabe drüber, statt hallo. In PHP ist dann die Spalte ebenso umbenannt.

Richtig wäre also (unter anderem):
$res = mysql_query("SELECT COUNT(id) AS irgendwas FROM user");
$a = mysql_fetch_array($res);
echo $a["irgendwas"];

BTW: Das steht alles im Manual.

--
Henryk Plötz
Grüße aus Berlin