如何在php列中总结值

时间:2014-06-08 10:39:52

标签: php sql

我试图总结this数据库中的所有值但由于某些原因我无法做到,我看了遍遍堆栈溢出并尝试了多种方法,但似乎都没有。我目前的代码是

<?php
error_reporting(0);
//INCLUDES//
include 'config.php';
//INCLUDES//

//DATA FETCH//
$rank=$_POST['R'];
$drank=$_POST['DR'];
//DATA FETCH//


//MYSQL STUFF//
$con=mysqli_connect($ip,$login,$password,$dbname);

for ($i = $rank; $i <= $drank; $i++) { // LOOP UNTIL 20 IS MET

$s=mysqli_query($con, "SELECT sum(rankprice) FROM cost WHERE rank='$i'");
if($s === FALSE) { //CHECK IF DATA IS THERE
    die('Error: ' . mysqli_error($con)); // IF NOT THERE SEND ERROR
}
$row = mysqli_fetch_array($s); //PUT DATA IN ROW
echo $row[0];


}
?>

它连接数据库没问题。当我使用echo $row[0];时,它会按顺序打印列的所有值。我已经尝试将它放入一个数组并打印它,但它似乎也不起作用。它似乎工作的唯一方法是当我通过删除SQL代码中的WHERE rank='$i'来添加列中的所有值时,我不想这样做。请帮忙 !

2 个答案:

答案 0 :(得分:0)

尝试以下查询:

$rankarr = array();
for ($i = $rank; $i <= $drank; $i++) { // LOOP UNTIL 20 IS MET
    $rankarr[] = $i;
}

$rankarr = implode(',', $rankarr);


$s=mysqli_query($con, "SELECT sum(rankprice) As myrank FROM cost WHERE rank in ($rankarr)");
if($s === FALSE) { //CHECK IF DATA IS THERE
    die('Error: ' . mysqli_error($con)); // IF NOT THERE SEND ERROR
}
$row = mysqli_fetch_array($s); //PUT DATA IN ROW

答案 1 :(得分:0)

您现在想要将rankprice的总和值放在同一个等级中。因此sum()的结果将与一个sql中的排名不同。您应该通过添加group by子句来告诉mysql,该子句按排名对表进行分组并获取每个组的sum()。

 $s=mysqli_query($con, "SELECT sum(rankprice) FROM cost WHERE rank='$i' GROUP BY rank ");