2011-04-27 2 views
25

У меня есть столбец в таблице, который я бы хотел добавить и вернуть сумму. У меня есть цикл, но он не работает.Получите сумму столбца MySQL в PHP

while ($row = mysql_fetch_assoc($result)){ 
    $sum += $row['Value']; 
} 

echo $sum; 
+0

, вы должны либо заменить это на SQL-запрос, который выполняет сумму, либо вы должны инициализировать '$ sum = 0' перед циклом. Я бы предложил сделать SQL-запрос с помощью поля sum(). – fbstj

+1

ничего плохого здесь кроме $ sum может иметь некоторое значение перед циклом, в чем ваш запрос? – piotrm

+1

вам нужно объявить переменную $ sum выше WHILE loop в '0' – SagarPPanchal

ответ

83

Вы можете полностью справиться с этим в запросе MySQL:

SELECT SUM(column_name) FROM table_name; 

В коде PHP, попробуйте следующее:

$result = mysql_query('SELECT SUM(value) AS value_sum FROM codes'); 
$row = mysql_fetch_assoc($result); 
$sum = $row['value_sum']; 

Использование PDO (mysql_query амортизируется)

$stmt = $handler->prepare("SELECT SUM(value) AS value_sum FROM codes"); 
$stmt->execute(); 

$row = $handler->fetchAll(PDO::FETCH_OBJ); 
$sum = $row->value_sum; 
+0

как это '$ sum = mysql_query (" SELECT SUM (Value) FROM Codes ");' с этим я получаю 'Resource id # 10', но не сумма всех значений. – jack

+4

Попробуйте '$ result = mysql_query ('SELECT SUM (значение) AS value_sum FROM codes'); $ row = mysql_fetch_assoc ($ result); $ sum = $ row ['value_sum']; '. – Flinsch

+0

Что такое значение и значение_sum? –

2

$row['Value'], вероятно, строка. Попробуйте использовать intval($row['Value']).

Кроме того, перед петлей убедитесь, что вы установили $sum = 0.

Или, еще лучше, добавьте SUM(Value) AS Val_Sum в ваш SQL-запрос.

1
$sql = "SELECT SUM(Value) FROM Codes"; 

$result = mysql_query($query); 

while($row = mysql_fetch_array($result)){ 

    sum = $row['SUM(price)']; 

} 

echo sum; 
8
$query = "SELECT * FROM tableName"; 
$query_run = mysql_query($query); 

$qty= 0; 
while ($num = mysql_fetch_assoc ($query_run)) { 
    $qty += $num['ColumnName']; 
} 
echo $qty; 
1

меня заменить код и он работает хорошо

$sum=0; 
while ($row = mysql_fetch_assoc($result)){ 
    $value = $row['Value']; 

    $sum += $value; 
} 

echo $sum; 
2
$result=mysql_query("SELECT SUM(column) AS total_value FROM table name WHERE column='value'"); 
$result=mysql_result($result,0,0); 
2

Попробуйте это:

$sql = mysql_query("SELECT SUM(Value) as total FROM Codes"); 
$row = mysql_fetch_array($sql); 
$sum = $row['total']; 
0

Получить Сумма конкретного значения строки с помощью PHP MYSQL

"SELECT SUM(filed_name) from table_name" 
+1

Вы имеете в виду использование MySQL? – TGrif

+0

мы получаем сумму от MYSQL, когда получаем результат, то почему мы пытаемся сделать какой-то цикл получения результата .. – senthilkumar

0

MySQL 5.6 (LAMP). column_value - это столбец, который вы хотите добавить. table_name - это таблица.

Метод # 1

$qry = "SELECT column_value AS count 
     FROM table_name "; 

$res = $db->query($qry); 

$total = 0; 
while ($rec = $db->fetchAssoc($res)) { 
    $total += $rec['count']; 
} 
echo "Total: " . $total . "\n"; 

Метод # 2

$qry = "SELECT SUM(column_value) AS count 
     FROM table_name "; 

$res = $db->query($qry); 

$total = 0; 
$rec = $db->fetchAssoc($res); 
$total = $rec['count']; 

echo "Total: " . $total . "\n"; 

Метод # 3 -SQLi

$qry = "SELECT SUM(column_value) AS count 
     FROM table_name "; 

$res = $conn->query($sql); 

$total = 0; 
$rec = row = $res->fetch_assoc(); 
$total = $rec['count']; 

echo "Total: " . $total . "\n"; 

Способ № 4: Остаточная (не использовать)

$res = mysql_query('SELECT SUM(column_value) AS count FROM table_name'); 
$row = mysql_fetch_assoc($res); 
$sum = $row['count']; 
Смежные вопросы