与PHP数组相比,使用MySQL查询数组时获得不同的结果

时间:2012-08-12 11:35:19

标签: php mysql

我正在编写一个脚本来计算出一组数据的模式,中位数和平均值。我有十条记录存储在MySQL数据库和PHP数组中。当脚本完成后,脚本将只使用存储在数据库中的数据而不是PHP数组,PHP数组就是用来测试代码的。

我发现,使用PHP数组与MySQL数组相比,结果有所不同。在PHP数组中,我有以下数据:

$arr = array(60, 70, 71, 76, 144, 151, 197, 229, 233, 233);

在我的MySQL数据库中,我有这段代码:

$data = mysql_query("SELECT amount FROM example") or die(mysql_error()); 
$arr = mysql_fetch_array($data);

数据相同,例外情况是MySQL数据在每条记录后包含.00。在尝试找出错误结果的原因的过程中,我从数据库中的每条记录中删除了.00。但数据仍然是错误的。

使用PHP数组时的结果给出了以下(正确)结果:

  

平均(平均)付款额£146.4
付款价值   最常发生的是233英镑。支付中位数£151

使用MySQL数组时的结果给出了以下(错误的)结果:

  

付款的平均(平均)值£144
发生的付款值   最常见的是£144。支付中位数£144

我无法解释为什么会这样。下面是我用来生成这些结果的PHP代码:

    <?php
        function arithmetic($array, $output = 'mean'){ 
            switch($output){ 
                // This case works out the mean
                case 'mean': 
                    $count = count($array); 
                    $sum = array_sum($array); 
                    $total = $sum / $count; 
                break; 
                // This case works out the median
                case 'median': 
                    rsort($array); 
                    $middle = round(count($array) / 2); 
                    $total = $array[$middle-1]; 
                break; 
                // This case works out the mode
                case 'mode': 
                    $v = array_count_values($array); 
                    arsort($v); 
                    foreach($v as $k => $v){$total = $k; break;} 
                break; 
            } 
            return $total; 
        } 

        // PHP Array with data
        //$arr = array(60, 70, 71, 76, 144, 151, 197, 229, 233, 233);

        // MySQL Connection & Retrieval of data
        $data = mysql_query("SELECT amount FROM example") or die(mysql_error()); 
        $arr = mysql_fetch_array($data);

    ?>

有人有什么想法吗?

更新
我一直在玩MySQL查询,并使用以下代码:

$data = mysql_query("SELECT * FROM example") or die(mysql_error()); 
$arr = mysql_fetch_assoc($data);
print_r ($arr);

显示以下内容,仅显示结果:

  

数组([id] =&gt; 1 [数量] =&gt; 144)

实际上,查询带来了所有记录,而不仅仅是那个记录。

2 个答案:

答案 0 :(得分:1)

嗯,原因是因为你只获取一行,因此只有一个数字......

$arr = array();

while ($result_array = mysql_fetch_row($data)) {
    $arr[] = $result_array[0];
}

在此代码之后,您应该能够计算出正确的值。

答案 1 :(得分:0)

我不知道这是否有帮助,但您可能想深入了解mysql-fetch数组()并按照那里的建议, http://php.net/manual/en/function.mysql-fetch-array.php

特别检查您正在提取的数据是否设置正确。

function db_result_single($result) { 
    return ($row = mysql_fetch_row($result)) && isset($row[0]) ? $row[0] : false; 
}