我有一个数组,每个数组都有不同的数据库总和(可能其中一些是空的或没有记录)
我需要知道哪一个有更大的总和比所有其他人(在我的阵列上)并将那个放在$更大的变量中,($ 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);
}
}
但它只显示新版本的值是否大于旧版本,而不是大于所有版本
感谢任何帮助
答案 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或将来会获得支持的东西。
您还应该学习如何测试数据库查询的失败条件。我的示例很简单,但生产代码应该测试查询和获取操作的成功/失败。