1

你好stackoverflow,很长一段时间的潜伏者第一次提问。无论如何,我正在为我的学校创建一个项目,它几乎已经完成,但我认为我需要 while 循环的帮助。我正在尝试对存储在数组中的变量求和,然后将其输出到一个可用的变量中,我可以与另一个变量求和。问题是每次我刷新到页面时循环只进行 1 次迭代。所以它最终会得到完整的数组,但一次只能得到一个项目。请让我知道我出了什么问题,我确定它是愚蠢的!

$bill= mysql_query("SELECT Transaction.date, Transaction.Price, Transaction.customer_customer_id, Service.cost, Service.user_id, Service.uname
FROM *.Transaction,*.Service
WHERE Transaction.customer_customer_id = Service.user_id AND Service.uname = '$uuname'");
$query_row=mysql_fetch_array($bill);
$userservice = ($query_row[cost]);
$userprice = ($query_row[Price]);

$row2=array();
while($row = mysql_fetch_array($bill))
{

    $row2[] += $row['cost'];

}
$totalservice = array_sum($row2);

感谢你们可能有的任何帮助。这个在炸我的大脑。

4

3 回答 3

1

您的 SQL 和 PHP 都没有任何意义。

FROM *.Transaction,*.Service

...将在 MySQL 中引发错误,但您的代码不会检查错误。我怀疑应该是:

FROM Transaction, Service

虽然 PHP 将解析并运行......

while($row = mysql_fetch_array($bill)) {
   $row2[] += $row['cost'];
}
$totalservice = array_sum($row2);

是一种非常奇怪的填充数组的方式。为什么不只是......

while($row = mysql_fetch_array($bill)) {
   $totalservice+=$row['cost'];
}

确实,如果您只是丢弃其余数据,那么您为什么要从数据库中获取它呢?

SELECT SUM(Service.cost)
FROM Transaction,Service
WHERE Transaction.customer_customer_id = Service.user_id 
AND Service.uname = '$uuname'

在这种情况下,连接也是多余的:

SELECT SUM(Service.cost)
FROM Service
WHERE Service.uname = '$uuname'
于 2012-12-12T15:01:52.123 回答
0

问题是每次我刷新到页面时循环只进行 1 次迭代。 您是否对数据库运行过查询并检查它是否返回多行?

此外,如果您只想对成本列求和,您可以在 sql 中执行此操作: SELECT SUM(cost)[....]

于 2012-12-12T14:27:30.617 回答
0

将查询重写为

SELECT Service.user_id, Service.uname, SUM(Service.cost) as cost FROM djqrico_hotel.Transaction LEFT JOIN djqrico_hotel.Service ON Transaction.customer_customer_id = Service.user_id WHERE Service.uname = '$uuname' GROUP BY Service.user_id

如果您想获得所有用户交易的总和。

于 2012-12-12T14:30:27.540 回答