PHP 具有 MySQL 查询输出的函数

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 循环完全错误?)或两者兼而有之。

提前致谢。

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

希望对您有所帮助。

两次:-

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

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

2.Call 函数如:-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';
}