【问题标题】:Is this the correct method to fetch and calculate SQL data?这是获取和计算 SQL 数据的正确方法吗?
【发布时间】:2014-08-27 08:36:55
【问题描述】:

我是 php 和 sql 的新手。今天,我给自己的任务是从 sql db 中获取整数值,然后做一些基本的计算。 还有什么地方可以在完成任务的同时减少代码,还是我已经降到了最基本的水平?我是否在此过程中过度执行了任何事情?

我的目标是;

  1. 从列中获取 db 值。
  2. 获取该列的平均值。
  3. 然后计算排除最高和最低值的新平均值。

以下方式我最好的尝试;

$con = new MySQLi('localhost', 'user', 'pass', 'db_test') ;

    $count = $con->query('SELECT COUNT(SP$) FROM `math`');
    $grp = $con->query('SELECT GROUP_CONCAT(SP$) FROM `math`');
    $min = $con->query('SELECT MIN(SP$) FROM `math`');
    $max = $con->query('SELECT MAX(SP$) FROM `math`');
    $sum = $con->query('SELECT SUM(SP$) FROM `math`');
    $avg = $con->query('SELECT AVG(SP$) FROM `math`');

    $count = $count->fetch_assoc();
    $grp = $grp->fetch_assoc();
    $min = $min->fetch_assoc();
    $max = $max->fetch_assoc();
    $sum = $sum->fetch_assoc();
    $avg = $avg->fetch_assoc();

    $count = $count['COUNT(SP$)'];
    $grp = $grp['GROUP_CONCAT(SP$)']; 
    $min = $min['MIN(SP$)'];
    $max = $max['MAX(SP$)'];
    $sum = $sum['SUM(SP$)'];
    $avg = $avg['AVG(SP$)'];

显示和计算如下;

    echo "Sample Size: " . $count ."</br />";
    echo "Display Values:" . $grp ."</br />";
    echo "Sum of Values: " . $sum ."</br />";
    echo "Average: " . $avg ."</br /></br />";

    echo "Now find the new average, by excluding the highest and lowest value:";

    echo "Lowest Value: " . $min ."</br />";
    echo "Highest Value: " . $max ."</br />";

    echo "New Sum: " . ($sum - $max - $min) . "</br />";
    echo "New Average : " . (($sum - $max - $min) / ($count-2));

【问题讨论】:

    标签: php sql mysqli calculated-columns


    【解决方案1】:

    你可以试试这样的:

    $con = new MySQLi('localhost', 'user', 'pass', 'db_test');
    $operations = ["count"=>'COUNT(SP$)',
        "grp"=>'GROUP_CONCAT(SP$)',
        "min"=>'MIN(SP$)',
        "max"=>'MAX(SP$)'...];
    
    foreach($operations as $name=>$value){
        $name = ${$name};
        $name = $con->query('SELECT '.$value.' FROM `math`');
        $name = $name->fetch_assoc();
        $name = $name[$value];
    }
    

    所做的是将所有操作放入关联数组 (http://php.net/manual/en/language.types.array.php) 并使用 foreach 语句循环该数组。

    现在,变量名称使用 PHP Variables - Concatenate variable name 组成。请注意,不建议这样做,但它存在并且有效。

    代码没有经过测试,因为我的机器上没有安装 PHP,但它应该是有效的。

    【讨论】:

    • 所以你认为我应该坚持我的做法?
    • 在给定的上下文中,因为输出不能很好地参数化,我认为这两种方式都一样好。只是一个有更多的文字,而另一个则更少。对于这个问题,这里有一些易于阅读的内容:framework.zend.com/manual/1.10/en/coding-standard.html您对每个 PHP 程序员都应该遵循的称为“编码标准”的东西感兴趣。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 2011-03-20
    • 2020-02-14
    相关资源
    最近更新 更多