2014-09-25 135 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';

然後你只有一個預先計算的總和來檢索。

如果行數很少,可能不會有很大的差別,但是在大量寫入時發送的寫入字節會少一些。