Я думаю, что может быть простое решение для моей проблемы. Я пытаюсь получить сумму значений, возвращаемых вызовом mysqli_query. Может быть, кто-то может помочь мне решить эту проблему?
В моей базе данных есть значения 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 (таким образом, значения в БД), но из второго эха я вижу только 0000000000. Даже цикл for не хорош, не знаю, как справиться с этим. Какие-либо предложения?
Вы устанавливаете сумму снова и снова, а не добавляете ее.
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);
}
}
Я думаю, что это решит вашу проблему.
Вы можете перенести суммирование в MySQL.
выберите сумму (столбец) из kartedb, где besetzt_von_user = ‘$ user’;
Тогда у вас есть только одна предварительно вычисленная сумма для извлечения.
Возможно, нет большой разницы, если число строк мало, но меньше байтов по сравнению с записью, которая будет отправлена, если это большая сумма.
В конце концов я это исправил, таким образом, это работает …
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;
}