2014-09-25 106 views
1

我认为这可能是我的问题的简单解决方案。我试图获得由mysqli_query调用返回的值的总和。也许有人可以帮我解决这个问题?mysqli_fetch_object - 如何获得值的总和

在我的数据库中,有INT值。

function get_einkommen($user, $var){ 
global $db; 
$sum; 
$sum2=0; 
$query = "SELECT $var FROM kartedb WHERE besetzt_von_user = '$user'"; 
if ($result = mysqli_query($db, $query)) { 

    while ($obj = mysqli_fetch_object($result)) { 

     $sum=intval($obj->$var); 
     echo $sum; 
    } 
    for($i=0;$i<10;$i++){ 
     $sum2=$sum2+$sum[$i]; 
     echo $sum; 
    } 

mysqli_free_result($result); 
} 
} 

从第一回声,我得到1121110(所以theese是在分贝值),但是从第二回声我只看到0000000000。即使是for循环也不好,不知道如何处理它。有什么建议么?

+1

您还没有分配给在while循环任何数组,但覆盖'$ sum'一遍又一遍... – bwoebi 2014-09-25 23:06:15

+0

有关使用参数化查询而不是盲目地将变量值插入sting的注释。 – atxdba 2014-09-25 23:10:42

+0

如果你只想检查一列的总和,为什么不使用MySQL的SUM()聚合函数而不是循环? – 2014-09-25 23:52:04

回答

0

Finaly我固定它,这样它的工作...

function get_einkommen($user, $var){ 
global $db; 
$query = "SELECT sum($var) AS var_sum FROM kartedb WHERE besetzt_von_user = '$user'"; 
$result = mysqli_query($db,$query); 
$row = mysqli_fetch_assoc($result); 
$sum = $row['var_sum']; 
echo $sum; 
} 
0

您正在反复设置金额而不是添加金额。

function get_einkommen($user, $var){ 
global $db; 
$sum; 
$sum2=0; 
$query = "SELECT $var FROM kartedb WHERE besetzt_von_user = '$user'"; 
if ($result = mysqli_query($db, $query)) { 

    while ($obj = mysqli_fetch_object($result)) { 

     $sum += intval($obj->$var); 
     echo $sum; 
    } 
    for($i=0;$i<10;$i++){ 
     $sum2=$sum2+$sum[$i]; 
     echo $sum; 
    } 

mysqli_free_result($result); 
} 
} 

我认为这会解决您的问题。

0

你可以将求和推送到mysql。

从kartedb中选择总和(列),其中besetzt_von_user ='$ user';

然后你只有一个预先计算的总和来检索。

如果行数很少,可能不会有很大的差别,但是在大量写入时发送的写入字节会少一些。