1

このコードの何が問題になっていますか?

$data455 = mysql_query("SELECT ROUND(SUM(gainloss), 4) FROM stats WHERE MONTH(date) = MONTH(CURRENT_TIMESTAMP) AND winloss = 'Win'");
$info455 = mysql_fetch_array($data455);
$testarray = array_sum($info455);
echo $testarray;

正しい金額が表示されません。「winloss」=「win」の最後の列の合計を取得したい

$testarray の出力は 79.5843 ですが、正しい合計は 41.6609 です。

これが私のデータベースの外観です。

データベース

4

4 に答える 4

2

array_sumクエリですでに合計を取得しているため、使用する必要はありません

$data455 = mysql_query("SELECT ROUND(SUM(gainloss), 4) AS total FROM stats WHERE MONTH(date) = MONTH(CURRENT_TIMESTAMP) AND winloss = 'Win'");
$info455 = mysql_fetch_array($data455);
echo $info455['total']; //this should give you the desired result
于 2013-09-11T04:15:01.540 に答える
2

試す

mysql_fetch_assoc($data455);

の代わりに

mysql_fetch_array($data455);

mysql_fetch_array連想配列とインデックス配列の両方を返すため、これが役立つ場合があります。これにより、混合結果が得られます。

于 2013-09-11T04:14:06.120 に答える
1

デフォルトでは、mysql_fetch_array は mysql からのデータを数値および連想配列として返します。これを行うことで、本質的に価値を2倍にしています。mysql_fetch_assoc() に変更して、結果を確認してください。

http://php.net/manual/en/function.mysql-fetch-array.php

于 2013-09-11T04:10:57.810 に答える
1

配列和の問題に見えます。その後のSQLとコード行を見る

$info455 = mysql_fetch_array($data455);

変数 $info455 には、次のような配列が含まれています

$info455['ROUND(SUM(gainloss), 4)'] = <some value>
$info455[0] = <some value>    

したがって、ここで変数は1つの値のみを2回保持します。したがって、array_sum は値を 2 倍にします。最初に、SQL が正しい結果と行数を示していることを確認してください。SQL から複数の行が必要で、PHP を使用して合計する場合は、結果セットを反復処理する必要があります

于 2013-09-11T04:11:43.597 に答える