Problem mit "SELECT COUNT('xy')..." im query
items
- php
0 Thomas Meinike0 Thomas Meinike0 items0 Henryk Plötz0 andreas0 Henryk Plötz0 andreas0 Henryk Plötz0 andreas
Hallo Forum,
über eine Funktion versuche ich die Anzahl der Zeilen einer Tabelle unter MySQL auszulesen. Es gelingt mir aber nicht, mir den Wert ausgeben zu lassen, sondern ich erhalte immer nur die Ausgabe "Resoure id #2".
Ich habe mal ein bißchen gegoogelt und es scheint so, als sei die Meldung "Resource id #2" ein Hinweis darauf, das die Abfrage erfolgreich war (bzw. eine Referenz auf den Speicher). Aber wie schaffe ich es, mir den Zahlenwert ausgeben zu lassen?
Die Funktion sieht so aus:
------------------------------------------------
function maxAnzahl($dbname){
$sql = "SELECT COUNT('id') FROM user";
$anzahl = mysql_db_query("$dbname",$sql);
echo anzahl."<br>";
}
--------------------------------------------------
Kann mir jemand weiterhelfen? Wenn ich "SELECT COUNT('id')FROM user" als SQL Statement in der MySQL Konsole eingebe, erscheint das Ergebnis und gibt mir die richtige Anzahl aus. Aber wie kriege ich das als Zahl in PHP ausgegeben?
Vielen Dank und Gruesse
items
Hallo,
Ich habe mal ein bißchen gegoogelt und es scheint so, als sei die Meldung "Resource id #2" ein Hinweis darauf, das die Abfrage erfolgreich war (bzw. eine Referenz auf den Speicher). Aber wie schaffe ich es, mir den Zahlenwert ausgeben zu lassen?
Wahlweise mit den Funktionen
mysql_fetch_rows()
mysql_fetch_array()
mysql_result()
Siehe http://www.selfphp4.de/funktionsuebersicht/mysql_funktionen.php
oder
http://www.zugeschaut-und-mitgebaut.de/php/m.html
MfG, Thomas
mysql_fetch_rows()
Korrektur:
mysql_fetch_row()
MfG, Thomas
Hi,
yo. Danke.Die Funktionen hatte ich auch schon. Wenn ich das über "mysql_num_rows()" mache, funzt das auch. Aber ich dachte über "COUNT" wird einem direkt der die Anzahl der records ausgegeben. Oder funzt das nur über die Konsole?
Grüße
Ralf
Moin
yo. Danke.Die Funktionen hatte ich auch schon. Wenn ich das über "mysql_num_rows()" mache, funzt das auch. Aber ich dachte über "COUNT" wird einem direkt der die Anzahl der records ausgegeben. Oder funzt das nur über die Konsole?
Klar wird einem direkt die Anzahl der records ausgegeben ... als SQL-Ergebnis. Du musst also nach wie vor genau das machen, was du auch machen würdest als wenn du ein Select das dir nur eine Zelle zurückgibt ausgeführt hättest (weil du genau das ja getan hast). Das kann die Funktion doch nicht riechen dass da nur eine Zelle rauskommen kann.
--
Henryk Plötz
Grüße aus Berlin
Moin!
Ging das nicht auch mit
SELECT COUNT('id') AS irgendwas FROM user
echo $irgenwas
also doch ohne besagte Funktionen?
Grüße
Andreas
Moin
Ging das nicht auch mit
SELECT COUNT('id') AS irgendwas FROM user
echo $irgenwas
Nein
--
Henryk Plötz
Grüße aus Berlin
denn so?
$query = "SELECT COUNT('id') AS irgendwas FROM user";
mysql_num_rows($query);
echo $irgenwas
?
Sorry aber der Einsatz von AS ist mir nicht wirklich klar;)
Andreas
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
Hi!
Vielen Dank! Nun ja, damit wäre das endgültig geklärt - Danke!
Grüße
Andreas