带有 MySQL 查询输出的 PHP 函数

标签 php mysql function output

// Sum of boys and girls for each school 

function bgTotSkl($bgTotSkl_SchoolName, $conn) {
    $bgTotSkl_Query = "SELECT SUM(result_studpoints) AS totalbg, stud_gender
    FROM result
    JOIN students ON result.stud_id WHERE result.stud_id = students.stud_id
    AND stud_school = '$bgTotSkl_SchoolName' 
    GROUP BY stud_gender";
    $mainQuery = mysqli_query($conn, $bgTotSkl_Query);
while ($data = mysqli_fetch_assoc($mainQuery)) {
echo bgTotSkl($bgTotSkl_SchoolName);
    }
}

echo bgTotSkl("CCA");

上面的代码是一个包含 mysql 查询的函数。该查询应该计算我数据库中特定学校获得的男孩和女孩的分数总和。查询工作正常,我已经测试过了。

我查询中的变量也代表学校名称,所以当我想输出特定学校的总数时 例如:

echo bgTotSkl("CCA");

学校 CCA 将被放置在函数中,查询将从特定学校 CCA 的数据库中获取男孩和女孩的总分。

问题是我无法获取输出查询结果的函数,我不知道是我的语法错误(我是否正确实现了查询中的变量?)还是整个逻辑错误(是 while循环完全错误?)或两者兼而有之。

提前致谢。

最佳答案

两点:-

1.Inside function首先添加这两行:-

if(isset($bgTotSkl_SchoolName)){
 $bgTotSkl_SchoolName = mysqli_real_escape_string($conn,$bgTotSkl_SchoolName);//It will prevent `SQL Injection`
}

2.调用函数如下:-echo bgTotSkl("CCA",$conn);那里缺少连接对象(第二个参数)

现在尝试如下:-

function bgTotSkl($bgTotSkl_SchoolName, $conn) {
    $bgTotSkl_Query = "SELECT SUM(result_studpoints) AS totalbg, stud_gender
    FROM result
    JOIN students ON result.stud_id WHERE result.stud_id = students.stud_id
    AND stud_school = '$bgTotSkl_SchoolName' 
    GROUP BY stud_gender";
    $mainQuery = mysqli_query($conn, $bgTotSkl_Query);
    while ($data = mysqli_fetch_assoc($mainQuery)) {
        echo $data['stud_gender'].' has gained overall '.$data['totalbg'].'points';
    }
}

bgTotSkl("CCA",$conn);

或者:-

function bgTotSkl($bgTotSkl_SchoolName, $conn) {
$result = array();
    $bgTotSkl_Query = "SELECT SUM(result_studpoints) AS totalbg, stud_gender
    FROM result
    JOIN students ON result.stud_id WHERE result.stud_id = students.stud_id
    AND stud_school = '$bgTotSkl_SchoolName' 
    GROUP BY stud_gender";
    $mainQuery = mysqli_query($conn, $bgTotSkl_Query);
    while ($data = mysqli_fetch_assoc($mainQuery)) {
        $result['stud_gender'] = $data['totalbg'];
    }
}
$college_name = 'CCA';
$data = bgTotSkl($college_name,$conn);

foreach($data as $key=>$value){
   echo $key.' of college '.$college_name.' has gained overall '.$value.'points';
}

关于带有 MySQL 查询输出的 PHP 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35585653/

相关文章:

c++ - C++动态链接库中的回调函数

c++ - 如何确保只输入 int 而不是 char?

php - 按给定顺序生成二进制数

php - file->getMimeType() 始终使用 Zend Framework 返回 application/octet-stream

php - 在 PHP 和 Perl 之间传递大量数据

php - 建立查询mysql的问题

MySQL order by count子查询

php - 如何递归获取此 MySQL 表中的 "parent ID"行?

python - mysqlclient-python 和安全问题

C编程问题指针和数组2d