// 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/