如何在PHP MySQL中读取查询行并计算多行?
这是我上一个问题的延伸。 我先前的问题解决了我的问题。链接 但只有当查询的每一行都有不同的值(即1st row=1和2nd row=1.5)时,它才起作用。只有这样它才能计算这两行 它不起作用,并且无法计算行是否具有相同的值(即第一行=1和第二行=1)。它只显示一行 代码如下所示如何在PHP MySQL中读取查询行并计算多行?,php,mysql,Php,Mysql,这是我上一个问题的延伸。 我先前的问题解决了我的问题。链接 但只有当查询的每一行都有不同的值(即1st row=1和2nd row=1.5)时,它才起作用。只有这样它才能计算这两行 它不起作用,并且无法计算行是否具有相同的值(即第一行=1和第二行=1)。它只显示一行 代码如下所示 <?php $sql = "SELECT sum_hour, SUM(sum_hour) FROM table
<?php
$sql = "SELECT sum_hour,
SUM(sum_hour)
FROM table
WHERE type_move = 'P' AND user_id='username' AND (start_date >= '2016-11-11' AND end_date <= '2016-11-15')
GROUP BY sum_hour ";
$result = mysqli_query($connect, $sql);
if($result && mysqli_num_rows($result) > 0)
{
$total = 0;
while($row = mysqli_fetch_assoc($result))
{
$hour = $row['sum_hour'];
$total += $hour;
echo " Hours = " .$hour. "<br/>";
print_r($row);
}
echo "Total hours = " .$total. "<br/>";
mysqli_free_result($result);
}
else
{
echo mysqli_error($connect);
}
?>
有人能帮忙吗
谢谢 我认为问题在于SQL中的分组-它似乎没有必要。按字段分组,然后对该字段求和,这有点矛盾 例如,如果有如下四行:
| sum_hour |
------------
| 3.0 |
| 4.5 |
| 1.0 |
| 1.0 |
然后按原样运行查询将产生以下行:
----------------------------
| sum_hour | SUM(sum_hour) |
----------------------------
| 3.0 | 3.0 |
----------------------------
| 4.5 | 4.5 |
----------------------------
| 1.0 | 2.0 | <-- all the 1.0s in the table have been grouped together by the GROUP BY clause and then the SUM of those rows calculated
然后在PHP中,只需检索一个值,如下所示:
$result = mysqli_query($connect, $sql);
if($result)
{
$total = 0;
if($row = mysqli_fetch_assoc($result))
{
$total = $row['total'];
}
echo "Total hours = " .$total. "<br/>";
//...etc
$result=mysqli\u查询($connect,$sql);
如果($结果)
{
$total=0;
如果($row=mysqli\u fetch\u assoc($result))
{
$total=$row['total'];
}
echo“总小时数=”.$Total.“
”;
//…等等
注意按小时分组
"SELECT sum_hour,
SUM(sum_hour)
FROM table
WHERE type_move = 'P' AND user_id='username'
AND (start_date >= '2016-11-11' AND end_date <= '2016-11-15')
GROUP BY sum_hour ";
“选择总小时,
总和(总和小时)
从桌子上
其中,type_move='P'和user_id='username'
和(开始日期>='2016-11-11'和结束日期您的代码在$total中似乎是正确的,您应该获得2是的。但它仅在查询的行具有不同的值时起作用。如果两行具有相同的值,则不起作用检查键入:total=0;
将是$total=0;
谢谢。已更改。:)很奇怪..尝试添加变量转储($total);在$total+=$hour之后;这样您就可以一步一步地检查结果了。我会先试试。稍后再通知您。谢谢:)您的建议代码不起作用。它没有计算行。@Jamilah请提供更多详细信息。使用我的建议的查询结果是什么?与您的建议相比,它有什么问题?(我不是说PHP部分,只是SQL)当我在SQL中运行它时,值和是完美的,没有任何问题。但是应该是(1+1=2)。但是PHP中的输出仍然显示为1。输出不计算行。@Jamilah所以我版本中的查询返回一行,其中值为2,对吗?
---------
| total |
---------
| 9.5 |
$result = mysqli_query($connect, $sql);
if($result)
{
$total = 0;
if($row = mysqli_fetch_assoc($result))
{
$total = $row['total'];
}
echo "Total hours = " .$total. "<br/>";
//...etc
"SELECT sum_hour,
SUM(sum_hour)
FROM table
WHERE type_move = 'P' AND user_id='username'
AND (start_date >= '2016-11-11' AND end_date <= '2016-11-15')
GROUP BY sum_hour ";