Porównaj ceny domen i usług IT, sprzedawców z całego świata

Funkcja sumy PHP


Mam następujący stół:
id q_id value 
------------------------
1 2 5
2 2 NULL
3 2 5
4 2 NULL
5 4 2
6 4 NULL
7 4 2
8 4 NULL

Chcę otrzymać sumę (na przykład) wszystkich wartości
gdzie q_id = 2
$sq = mysql_query("SELECT SUM(value) AS sum FROM table WHERE q_id = 2)or die(mysql_error());
while($row = mysql_fetch_array($sq)){
$sum = $row['sum'];
}
echo $sum."";

Ale dostaję ...
5
5

Ale ja chcę sumy wartości i oczekuję 10 zamiast tego.
Dzięki za pomoc.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli mimo wszystko zamierzasz zapętlić zbiór wyników, dlaczego nie po prostu użyć
SELECT value FROM table WHERE q_id=2
następnie zsumuj te wartości za pomocą pętli while? Raczej:
while($row = mysql_fetch_array($sq)) {
    $sum += $row['value'];
}
echo $sum."";
Edycja: Ponadto, jak powiedział powyżej Jason McCreary, powinieneś przyjrzeć się alternatywnej metodzie zapytań do bazy danych. Sugerowałbym wyszukanie na php.net nazwy „PDO”, która jest bardzo łatwa w użyciu.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Spróbuj ... Pokazujesz
value
, w kodzie brakuje cudzysłowu.
$sq = mysql_query("SELECT SUM(value) AS sum FROM `table` WHERE `q_id` = '2'")or die(mysql_error()); while($row = mysql_fetch_assoc($sq))
{
$sum = $row["sum"];
} echo $sum . "";
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

$sq="SELECT value FROM table WHERE q_id='".$am."'"; 
$result=mysqli_query($link,$sq);
while($row=mysqli_fetch_assoc($result)) {
$sum += $row['value'];
}
echo "Sum: ".$sum."";
//$am ='2';
//$link -- connection to the data base

Proszę umieścić
$ am = '2';
przed instrukcją select, a także upewnić się, że łączysz się z bazą danych za pomocą
$ link
Otrzymasz całkowitą kwotę zgodnie z wartością
q_id
Przetestowałem kod i działa świetnie.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Musisz dodać grupę zgodnie z Twoją prośbą. Na koniec dodaj następujące elementy
GROUP BY q_id

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się