【发布时间】:2017-06-21 23:50:37
【问题描述】:
只是想得到一个查询结果的总和,我得到:
array_sum() 期望参数 1 是数组,给定对象
附上代码:
function getPerformance($limit, $mysqli) {
if (is_numeric($limit)) {
$limit = 'LIMIT '.$limit;
} else {
$limit = NULL;
}
if ($stmt = $mysqli->query("SELECT time FROM admin_performance ORDER BY id DESC $limit")) {
$average = array_sum($stmt) / count($stmt);
$average = number_format(($average*1000),2,'.',',');
} else {
$average = 'Error';
}
return $average;
}
我还尝试在查询后使用 $array = mysqli_fetch_array($stmt) 并将 array_sum($stmt) 更改为 array_sum($array) 并得到相同的结果。
我解决了这个问题:
function getPerformance($limit, $mysqli) {
if (is_numeric($limit)) {
$limit = 'LIMIT '.$limit;
} else {
$limit = NULL;
}
if ($stmt = $mysqli->query("SELECT time FROM admin_performance ORDER BY id DESC $limit")) {
$rows = mysqli_num_rows($stmt);
$sum = 0;
while ($array = mysqli_fetch_array($stmt)) {
$sum += $array['time'];
}
$average = $sum/$rows;
$average = number_format(($average*1000),2,'.',',');
} else {
$average = 'Error';
}
return $average;
}
但是我做错了什么?我想没有 while() 循环会更有效。
【问题讨论】:
-
$stmt是mysqli_result,而不是数组。 -
你为什么用 PHP 计算平均值?在 SQL 中使用
SELECT AVG(time)。 -
不是mysqli_fetch_result()之后的数组吗?
-
我不知道我可以在 SQL 中做到这一点!这可能是一个更好的选择!
-
没有
mysqli_fetch_result()这样的功能。