mysql_num_rows() giebt nur zeichen aus

Showmaker

Erfahrener Benutze
29 April 2006
250
14
Hallo liebe Klammuser,

Ich habe volgenen Code geschrieben und lasse mir die varieablen ausgeben als ergebnis kommt volgenes raus.

X
?

)




Keine fehlermeldung oder anderes. In der Config wird nur die Verbinmdung zur Datenbank hergestellt.

PHP:
<?
include("config.php");
//Zaehle registrierte Mitglieder
$abfrage    = "SELECT * FROM battle_user";
$ergebnis    = mysql_query($abfrage); 
$lang['user']   = mysql_num_rows($ergebnis);
//Zaehle Weibliche Mitglieder
$abfrage    = "SELECT * FROM battle_user WHERE geschlecht='female'";
$ergebnis    = mysql_query($abfrage); 
$lang['frauen']   = mysql_num_rows($ergebnis);
//Zaehle Maennliche Mitglieder
$abfrage    = "SELECT * FROM battle_user WHERE geschlecht='male'";
$ergebnis    = mysql_query($abfrage); 
$lang['maenner']  = mysql_num_rows($ergebnis);
//Zaehle Deutsche Mitglieder
$abfrage    = "SELECT * FROM battle_user WHERE land='Deutschland'";
$ergebnis    = mysql_query($abfrage); 
$lang['deutschland'] = mysql_num_rows($ergebnis);
//Zaehle Schweiz Mitglieder
$abfrage    = "SELECT * FROM battle_user WHERE land='Schweiz'";
$ergebnis    = mysql_query($abfrage); 
$lang['schweitz']  = mysql_num_rows($ergebnis);
//Zaehle Oesterreich Mitglieder
$abfrage    = "SELECT * FROM battle_user WHERE land='Austria'";
$ergebnis    = mysql_query($abfrage); 
$lang['oesterreich'] = mysql_num_rows($ergebnis);
//Zaehle Sonstige Mitglieder
$abfrage    = "SELECT * FROM battle_user WHERE land='Sonstiges'";
$ergebnis    = mysql_query($abfrage); 
$lang['sonstiges']  = mysql_num_rows($ergebnis);
?>

Wo ist der Fehler?
 
Ich sehe keine Ausgabe im Code.

P.S. ich hoffe, dieser Code wird niemals irgendwo online laufen. Dein Hoster steigt dir aufs Dach, wenn du Millionen von Datensätzen lädst, um sie dann wegzuwerfen. Nimm COUNT(*)!
 
die Ausgabe wird über ein tpl datei gegeben da ist auch kein Fehler denn wenn ich etwas direckt in einer Variable schreibe dan wird es auch richtig ausgegeben.

Ich muss doch mit COUNT(*) auch den code 7 mal schreiben da immer andere anvorderungen erfüllt werden müssen.
 
Ich muss doch mit COUNT(*) auch den code 7 mal schreiben da immer andere anvorderungen erfüllt werden müssen.
Es geht doch nicht drum, wieviel du schreiben musst 8O

Bei deinem Code muss die Datenbank u.U. Terrabytes von Daten laden und bearbeiten, während ein COUNT(*) wahrscheinlich irgendwo in den Caches liegt und in O(1) abläuft.
 
Danke für eure Hilfe ich habe jetzt mal eins mit Count gemacht
Jetzt giebt er kein X mehr aus sondern ein warum bekomme ich keine Zahl?

PHP:
//Zaehle registrierte Mitglieder
$abfrage    = "SELECT count(*) FROM battle_user";
$lang['user']   = mysql_query($abfrage);
 
Guck mal im Manual nach, was mysql_query() zurückgibt.
 
Auch wenn mich tH jetzt hauen wird, ich werde dir trotzdem helfen, das öffnen eines neuen Tabs zu vermeiden:

PHP:
//Zaehle registrierte Mitglieder
$abfrage    = mysql_fetch_assoc(mysql_query("SELECT count(*) AS anzahl FROM battle_user"));
$lang['user']   = $abfrage['anzahl'];
 
Das Ergebnis sollte sich auch mit einem einzigen Statement ermitteln lassen:

SELECT
count(*) as gesamt,
SUM ( case when geschlecht='female' THEN 1 ELSE 0 END CASE) as weiblich,
SUM ( case when geschlecht='male' THEN 1 ELSE 0 END CASE) as maennlich,
SUM ( case when land='Deutschland' THEN 1 ELSE 0 END CASE ) as deutsch,
...
FROM battle_user ;
 
Zuletzt bearbeitet:
MySQL gibt bool'sche Werte doch eh schon als 0/1 zurück, insofern dürfte man sich den CASE auch sparen können.
Code:
SELECT
  COUNT(*) AS gesamt,
  SUM ( geschlecht='female' ) AS weiblich,
  SUM ( geschlecht='male' ) AS maennlich,
  SUM ( land='Deutschland' ) AS deutsch,
--  ...
FROM battle_user