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

尝试

mysql_fetch_assoc($data455);

安装在

mysql_fetch_array($data455);

这可能对您有所帮助,因为mysql_fetch_array返回关联数组和索引数组,您会通过它获得混合结果。

于 2013-09-11T04:14:06.120 回答
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 回答
1

默认情况下,mysql_fetch_array 将 mysql 中的数据作为数字和关联数组返回。通过这样做,您实际上使您的价值翻了一番。更改为 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>    

所以在这里你的变量只持有一个值两次。所以 array_sum 将使值加倍。首先尝试查看您的 SQL 是否给出了正确的结果以及行数。如果您想要 SQL 中的多行然后使用 PHP 求和,那么您必须迭代结果集

于 2013-09-11T04:11:43.597 回答