1

こんにちは、 stackoverflowさん。とにかく、私は学校のプロジェクトを作成しており、ほぼ完全に完成していますが、while ループの助けが必要だと思います。配列に格納されている変数を合計してから、別の変数と合計できる使用可能な変数に出力しようとしています。問題は、ページを更新するたびにループが 1 回しか反復しないことです。したがって、最終的には完全な配列を取得しますが、一度に 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

クエリを次のように書き換えます

Service.user_id、Service.uname、SUM(Service.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 に答える
0

問題は、ページを更新するたびにループが 1 回しか反復しないことです。 データベースに対してクエリを実行し、複数の行が返されているかどうかを確認しましたか?

また、コスト列を合計するだけであれば、SQL でそれを行うことができます。 SELECT SUM(cost)[....]

于 2012-12-12T14:27:30.617 に答える