MYSQL Summe einer Spalte ausgeben?
Hallo,
ich möchte ganz einfach die Summe von Zahlen einer MYSQL Spalte ausgeben.
Folgenden Code habe ich dafür: https://prnt.sc/ukixzh
Allerdings funktioniert der nicht.
Wo liegt das Problem?
Vielen Dank für eure Hilfe!
Was spuckt denn PhpMyAdmin aus wenn du das Statement ausführst?
Das Statement funktioniert
2 Antworten
1.) COUNT erscheint mir in diesem konkreten Fall angebrachter als SUM
2.) SUM dürfte nur bei Spalten mit numerischem Wert funktionieren. Da du in der conditiond eines WHERE-clauses allerdings Anführungszeichen verwendet hast, gehe ich davon aus, dass es sich nicht um ein numerisches Feld handelt.
Schau mal, ob mysqli_query fehlschlägt.(FALSE zurückliefert).
Ansonsten versuch mal, korrekterweise die Anführungsstriche in deiner WHERE-condition wegzulassen.
Ansonsten sehe ich keinen Fehler.
Folgende Fehlermeldung bekomme ich:
Notice: Undefined property: stdClass::$status in /var/www/html/lotterie/start.html on line 83
Ah na klar. Dein Feld heiß nicht "status". Du wählst ja mittels SELECT nicht "status" aus, sondern "SUM(status)".
Wie das Feld dann heißt, weiß ich nicht, aber du kannst es ja mittels Alias(AS) benennen.
Dann bekomme ich diese Fehlermeldung
Ja na klar. Du hast den fehler gemacht, von dem ich bereits implizit ausging, dass man ihn nicht machen würde.
"SUM(status)" ist kein gültiger Bezeichner für eine Variable. Folglich wird das Feld wohl anders beannt.
Da ich allerdings nicht wieß, wie das benannt wird, rate ich dazu, ein Alias zu nutzen, um im Query das Feld umzubenennen.
SELECT SUM(status) AS statusSum FROM lose WHERE status = 1
Dann kannst du das Feld mittels
$row->statusSum
abrufen.
3 Möglichkeiten:
SELECT SUM(status) FROM lose GROUP BY Status HAVING Status='1';
SUM() ist eine Aggregatfunktion, die aus mehreren Zeilen eine macht. Daher das GROUP zur Verdeutlichung, auch wenn es MySQL selbst machen würde.
HAVING ist das ähnlich WHERE, bezieht aber Ergebnisse in GROUP ein, die zutreffen, WHERE funktioniert nicht immer bei Aggregatfunktionen.
SELECT COUNT(status) FROM lose WHERE Status='1';
oder per PHP
$ergebnis=mysqli_query($name1, "SELECT status FROM lose WHERE Status='1';");
echo array_sum(mysqli_fetch_all($ergebnis));
Es handelt sich um einen Numerischen Wert, der Befehl an sich funktioniert auch.
Allerdings funktioniert die Ausgabe in php nicht.