Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何汇总php列中的值_Php_Sql - Fatal编程技术网

如何汇总php列中的值

如何汇总php列中的值,php,sql,Php,Sql,我试图总结数据库中的所有值,但由于某些原因我做不到,我查看了所有堆栈溢出,并尝试了多种方法,但似乎都不起作用。我现在的代码是 <?php error_reporting(0); //INCLUDES// include 'config.php'; //INCLUDES// //DATA FETCH// $rank=$_POST['R']; $drank=$_POST['DR']; //DATA FETCH// //MYSQL STUFF// $con=mysqli_connect($

我试图总结数据库中的所有值,但由于某些原因我做不到,我查看了所有堆栈溢出,并尝试了多种方法,但似乎都不起作用。我现在的代码是

<?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'
来添加列中的所有值,这是我不想做的。请帮忙

尝试以下查询:

$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
$rankarr=array();

对于($i=$rank;$i您现在希望在同一个秩中获得rankprice的和值。因此sum()的结果将不同于一个sql中的秩。您应该通过添加group by子句告诉mysql,该子句按秩对表进行分组,并获得每个组的sum()

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

试过了,我重新分配了echo以适应AS,但它仍然按如下顺序打印所有内容:1313141416202025253040您能解释一下您想要什么样的逻辑吗?从代码中,您似乎正在查询表中唯一的特定列组,因此总和将始终返回相同的值。例如,对于列组->1,只有一个条目如果表中有,那么where子句(rank=1)的sum(rankprice)将只返回9。我想将该列中符合“rank=”$I“”的所有行相加,我得到了我想要的所有数字,我只是不知道如何将它们相加=/使用此查询:mysqli_query($con),“选择sum(rankprice)作为myrank FROM cost where rank in($rankarr))其中,$rankarr是一个以逗号分隔的列组值的数组,例如1,2,3。您有可能在整个代码中实现它,因为我遇到了一些错误,我不知道如何修复它们。错误:您的SQL语法中有一个错误;请查看与您的MySQL服务器版本对应的手册,以了解在“where rank=”附近使用的正确语法5''在第1行,该sql代码出错。抱歉,最后只是追加group by。我犯了一个错误。您可以先在phpMyadmin中尝试sql。杰克,您的答案非常简短。您可能需要添加一些解释。