Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数组和给出了错误的值_Php_Mysql - Fatal编程技术网

Php 数组和给出了错误的值

Php 数组和给出了错误的值,php,mysql,Php,Mysql,这个代码有什么问题 $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; 它没有显示正确的总和。我想得

这个代码有什么问题

$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

下面是我的数据库的外观


mysql\u fetch\u数组默认情况下以数字和关联数组的形式返回mysql中的数据。通过这样做,你的价值实际上翻了一番。更改为mysql_fetch_assoc(),然后查看结果


mysql\u fetch\u数组默认情况下以数字和关联数组的形式返回mysql中的数据。通过这样做,你的价值实际上翻了一番。更改为mysql_fetch_assoc(),然后查看结果


看起来是数组和的问题。查看SQL和之后的代码行

$info455 = mysql_fetch_array($data455);
变量$info455包含如下数组

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

所以这里的变量只保存一个值两次。因此,数组_sum将使值加倍。首先尝试查看SQL是否给出了正确的结果以及有多少行。如果希望从SQL中获得多行,然后使用PHP求和,则必须在结果集上迭代,这看起来是数组求和的问题。查看SQL和之后的代码行

$info455 = mysql_fetch_array($data455);
变量$info455包含如下数组

$info455['ROUND(SUM(gainloss), 4)'] = <some value>
$info455[0] = <some value>    
$info455['ROUND(SUM(gainloss),4)]=
$info455[0]=
所以这里的变量只保存一个值两次。因此,数组_sum将使值加倍。首先尝试查看SQL是否给出了正确的结果以及有多少行。如果希望从SQL中获得多行,然后使用PHP求和,则必须在结果集上迭代

mysql_fetch_assoc($data455);
代替

mysql_fetch_array($data455);
这可能会对您有所帮助,因为
mysql\u fetch\u array
同时返回关联数组和索引数组,您通过它可以得到混合的结果。

试试看

mysql_fetch_assoc($data455);
代替

mysql_fetch_array($data455);

这可能会对您有所帮助,因为
mysql\u fetch\u array
同时返回关联数组和索引数组,您可以通过它获得混合结果。

您不必使用
数组\u 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

您不必使用
array\u 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

您似乎要对列求和两次,一次是在查询中,另一次是在php中。这真的是您想要的吗?您似乎要对列求和两次,一次在查询中,一次在php中。这真的是你想要的吗?