我如何计算数组中的哪个值在数据库上有更大的总和

时间:2013-01-09 19:40:20

标签: php mysql

我有一个数组,每个数组都有不同的数据库总和(可能其中一些是空的或没有记录)

我需要知道哪一个有更大的总和比所有其他人(在我的阵列上)并将那个放在$更大的变量中,($ greater = $ value)

我的尝试:

$new = 0;
$myarray = array('2', '5', '17', '55');

foreach($myarray as $value) {
    $before = intval($new);

    $query = mysql_query("SELECT SUM(total) AS totals FROM table WHERE id='$value'");
    $result = mysql_fetch_assoc($query);
    $new = intval($result['totals']);

    if ($new > $before){
        $biggest=intval($value);
    }
}

但它只显示新版本的值是否大于旧版本,而不是大于所有版本

感谢任何帮助

1 个答案:

答案 0 :(得分:4)

我会完全消除循环并按照这样做:

$myarray = array('2', '5', '17', '55');
$query = "SELECT SUM(total) AS totals FROM table WHERE id IN (" . implode(', ', $myarray) . ") GROUP BY id ORDER BY totals DESC LIMIT 1";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);

请注意,您希望按排序顺序接收所有id的数据,您只需删除LIMIT子句,并添加循环以读出结果集的每一行。

我还建议不要使用mysql_*函数,因为它们已被弃用。如果您只是学习PHP,那么您应该学习使用mysqli_*函数,PDO或将来会获得支持的东西。

您还应该学习如何测试数据库查询的失败条件。我的示例很简单,但生产代码应该测试查询和获取操作的成功/失败。