【问题标题】:Foreach loop in MySQL queryMySQL 查询中的 Foreach 循环
【发布时间】:2017-10-27 17:12:51
【问题描述】:

让我解释一下背景故事,老师可以设置学生在场或缺席。这些学生的值被放入数据库中,此查询选择课程代码并计算某节课上学生的百分比,但是我有点不知道该怎么做,文件必须转换为 JSON 和放入 ChartJS 条形图,但由于某种原因,我似乎无法弄清楚这段代码,必须为每个班级计算每个百分比,所以我不能使用 IN 或类似的东西来计算整个课程的存在而不是每节课的课程(这就是 klas.code = '$klas' 的用途)有人知道我如何获得 1 个结果但仍然能够分别计算每个课程的百分比吗?

谢谢。

$klassen = array("WFHBOICT.V1E", "WFHBOICT.V1F");
foreach($klassen as $klas){
//query to get data from the table
$query = ("SELECT klas.code klas, ROUND(
(
    SELECT Count(aanwezigheid) 
    FROM aanwezigheid 
    JOIN college ON aanwezigheid.Ccode = college.code  
    JOIN klas ON college.Kcode = klas.code
    WHERE klas.code = '".$klas."' AND vak.code = 'WFHBOICT.M032.16' AND college.college = '8'
    AND aanwezigheid = '1'
) 
/
(
    SELECT Count(aanwezigheid) 
    FROM aanwezigheid 
    JOIN college ON aanwezigheid.Ccode = college.code  
    JOIN klas ON college.Kcode = klas.code
    WHERE klas.code = '".$klas."' AND vak.code = 'WFHBOICT.M032.16' AND college.college = '8'
) 
* 100)
    as percentage
FROM aanwezigheid 
JOIN college ON aanwezigheid.Ccode = college.code 
JOIN klas ON college.Kcode = klas.code 
JOIN vak ON college.Vcode = vak.code 
WHERE klas.code = '".$klas."' AND vak.code = 'WFHBOICT.M032.16' AND college.college = '8'
GROUP BY klas.code");

//execute query
$result = $mysqli->query($query);

//loop through the returned data
$data = array();
foreach ($result as $row) {
$data[] = $row;
}

print json_encode($data);

这是结果:

[{"klas":"WFHBOICT.V1F","percentage":"67"}]

它必须返回括号之间的两个类,而不仅仅是 1...

【问题讨论】:

标签: php mysql json database foreach


【解决方案1】:

问题来自第一个 foreach 循环。在它之前初始化 $data 数组并在打印之前关闭第一个 foreach。

$klassen = array("WFHBOICT.V1E", "WFHBOICT.V1F");

$data = array();
foreach($klassen as $klas){
    //query to get data from the table
    $query = ("SELECT klas.code klas, ROUND(
    (
        SELECT Count(aanwezigheid)
        FROM aanwezigheid
        JOIN college ON aanwezigheid.Ccode = college.code
        JOIN klas ON college.Kcode = klas.code
        WHERE klas.code = '".$klas."' AND vak.code = 'WFHBOICT.M032.16' AND college.college = '8'
        AND aanwezigheid = '1'
    )
    /
    (
        SELECT Count(aanwezigheid)
        FROM aanwezigheid
        JOIN college ON aanwezigheid.Ccode = college.code
        JOIN klas ON college.Kcode = klas.code
        WHERE klas.code = '".$klas."' AND vak.code = 'WFHBOICT.M032.16' AND college.college = '8'
    )
    * 100)
        as percentage
    FROM aanwezigheid
    JOIN college ON aanwezigheid.Ccode = college.code
    JOIN klas ON college.Kcode = klas.code
    JOIN vak ON college.Vcode = vak.code
    WHERE klas.code = '".$klas."' AND vak.code = 'WFHBOICT.M032.16' AND college.college = '8'
    GROUP BY klas.code");

    //execute query
    $result = $mysqli->query($query);

    //loop through the returned data

    foreach ($result as $row) {
        $data[] = $row;
    }
} // end first foreach
print json_encode($data);

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    相关资源
    最近更新 更多