Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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-PDO-MYSQL_Php_Mysql_Pdo_Sum_Fetch - Fatal编程技术网

如何对堆叠在不同行中的值求和?PHP-PDO-MYSQL

如何对堆叠在不同行中的值求和?PHP-PDO-MYSQL,php,mysql,pdo,sum,fetch,Php,Mysql,Pdo,Sum,Fetch,假设我们有一个非常简单的while行查询脚本,例如: <?php include('conection.php'); $Verd = 'Verduras'; $smt = $con->prepare("select * from prodcts WHERE Type = :Verduras Order by PrdName ASC"); $smt->bindParam(':Verduras', $Verd, PDO::PARAM_STR);

假设我们有一个非常简单的while行查询脚本,例如:

<?php 
include('conection.php');

    $Verd = 'Verduras';
    $smt = $con->prepare("select * from prodcts WHERE Type = :Verduras Order by PrdName ASC");
    $smt->bindParam(':Verduras', $Verd, PDO::PARAM_STR);
    $smt->execute();
while ($smr = $smt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT)) 
        {
        echo '<th>'.nl2br($smr['PrdName']).'</th><th>'.nl2br($smr['SellType']).'</th><th>$'.nl2br($smr['Cost']).'</th>';
        }
?>

问题:

如何将
$smr['Cost']
的结果与其余行/其他行的
$smr['Cost']
相加

任何评论、建议、改进问题的问题或任何寻求帮助和改进问题或解决方案的相关答案等都将受到高度赞赏

提前谢谢


PS:我以前检查过另一个答案,但大部分是面向mysql的,不过我想检查一个面向PHP的解决方案,以便对它有更多的控制,并尽量避免(如果可能)多个查询。

在开始while循环之前,创建一个变量。在while循环中,按要添加的值增加变量。 e、 g:


希望对您有所帮助

如果您需要所有行的总和,您可以在while之前创建一个变量

$Verd = 'Verduras';
$sum = 0;
$smt = $con->prepare("select * from prodcts WHERE Type = :Verduras Order by PrdName ASC");
$smt->bindParam(':Verduras', $Verd, PDO::PARAM_STR);
$smt->execute();
while ($smr = $smt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT)) {
    echo '<th>'.nl2br($smr['PrdName']).'</th><th>'.nl2br($smr['SellType']).'</th><th>$'.nl2br($smr['Cost']).'</th>';
    $sum += $smr['Cost'];
}
echo $sum;
之后,您可以用foreach显示每一行。。。
仅使用SQL很容易控制,但如果您需要使用PHP实现处理,我希望它会有所帮助。

您可以使用MySQL的聚合
COUNT()
SUM()
函数。PHP还有一个
count()
函数。那么,是否真的没有办法避免使用第二个表来存储所需的行,然后将它们相加?我不明白这一点。你能发布一些原始数据的样本,以及预期的结果吗?我在上面编辑了我的评论;说PHP还有一个
count()
函数。你也可以使用数学运算符。非常感谢,我不希望所有这些解都这么快,我会在以后检查它们,然后再次检查,非常感谢汉克斯,我不希望所有这些解都这么快,我会在以后检查它们,然后再次检查,非常感谢汉克斯,我没想到所有这些解决方案都这么快,我会在以后检查所有这些解决方案,然后再次检查,非常感谢
<?php echo $total ?>
$Verd = 'Verduras';
$sum = 0;
$smt = $con->prepare("select * from prodcts WHERE Type = :Verduras Order by PrdName ASC");
$smt->bindParam(':Verduras', $Verd, PDO::PARAM_STR);
$smt->execute();
while ($smr = $smt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT)) {
    echo '<th>'.nl2br($smr['PrdName']).'</th><th>'.nl2br($smr['SellType']).'</th><th>$'.nl2br($smr['Cost']).'</th>';
    $sum += $smr['Cost'];
}
echo $sum;
$Verd = 'Verduras';
$sum = 0;
$smt = $con->prepare("select * from prodcts WHERE Type = :Verduras Order by PrdName ASC");
$smt->bindParam(':Verduras', $Verd, PDO::PARAM_STR);
$smt->execute();
while ($smr = $smt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT)) {
  $prd[$smr['PrdName']][$smr['SellType']][0] += $smr['Cost'];
}