2011-04-27 21 views
25

Tengo una columna en una tabla que me gustaría agregar y devolver la suma. Tengo un bucle, pero no está funcionando.Obtener la suma de la columna MySQL en PHP

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

echo $sum; 
+0

debe reemplazar esto con una consulta SQL que haga la suma, o debe inicializar '$ sum = 0' antes del bucle. Sugeriría hacer una consulta SQL con un campo sum(). – fbstj

+1

no hay nada mal aquí, excepto que $ sum puede tener algún valor antes del bucle, ¿cuál es su consulta? – piotrm

+1

tiene que declarar la variable $ sum por encima del bucle WHILE a '0' – SagarPPanchal

Respuesta

83

Se puede controlar por completo en la consulta de MySQL:

SELECT SUM(column_name) FROM table_name; 

En el código PHP, intente esto:

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

Usando DOP (mysql_query es amortizado)

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

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

como este '$ sum = mysql_query (" SELECT SUM (Value) FROM Codes ");' con esto obtengo 'Resource id # 10' pero no el suma de todos los valores. – jack

+4

Pruebe '$ result = mysql_query ('SELECT SUM (valor) AS value_sum FROM codes'); $ row = mysql_fetch_assoc ($ result); $ sum = $ row ['value_sum']; '. – Flinsch

+0

¿Cuál es el valor y el valor_sum? –

2

$row['Value'] es probablemente una cadena. Intenta usar intval($row['Value']).

Además, asegúrese de configurar $sum = 0 antes del ciclo.

O, mejor aún, agregue SUM(Value) AS Val_Sum a su consulta 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

tengo reemplazar su código y funciona bien

$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

Prueba esto:

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

Consigue una suma de valor particular fila usando PHP MYSQL

"SELECT SUM(filed_name) from table_name" 
+1

¿Quiere decir usar MySQL? – TGrif

+0

obtenemos la suma de MYSQL cuando obtenemos el resultado, entonces, ¿por qué tratamos de obtener algún resultado de bucle? – senthilkumar

0

MySQL 5.6 (LAMP). column_value es la columna que desea agregar. table_name es la tabla.

Método # 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"; 

Método # 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"; 

Método # 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"; 

Método # 4: depreciado (no utilizar)

$res = mysql_query('SELECT SUM(column_value) AS count FROM table_name'); 
$row = mysql_fetch_assoc($res); 
$sum = $row['count']; 
Cuestiones relacionadas