带有 MySQL 查询输出的 PHP 函数


PHP Function with MySQL Query 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.在function里面先添加这两行:-

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

2.调用函数如下:- echo bgTotSkl("CCA",$conn); connection object(second parameter) is missing there

现在尝试如下:-

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';
}

下面是 mysqli 准备语句的简单教程: http://markonphp.com/mysqli-select-prepared-statements/

希望对您有所帮助。