繁体   English   中英

通过嵌套循环遍历多个数据库表?

[英]Looping through multiple database tables with nested loop?

我的数据库中有三个表。 学生,模块和关系。 关系表的每一行都包含一个学生ID和一个模块ID(即,它包含一个学生所采用的模块)。

我试图遍历关系表并找到特定学生所学的所有模块,然后打印出每个模块的详细信息(例如名称和模块代码)。

我正在尝试使用嵌套循环执行此操作,但是内部循环仅运行一次并打印出第一个模块。 我认为这与在while循环中使用第二个sql查询和$m_id不会随每次迭代更新有关。 到目前为止,这是我的代码

<?php
        include 'connect.php';
        $sql = "SELECT * FROM relations WHERE student_id = '1'";
        $result = $conn->query($sql);
        if($result->num_rows > 0) {
            while($row = mysqli_fetch_array($result)) {
                $m_id = $row["module_id"];

                $sql = "SELECT * FROM modules WHERE module_id = $m_id";
                $result = $conn->query($sql);
                if($result->num_rows > 0) {
                    while($row = mysqli_fetch_array($result)) {
                        echo $row["module_code"];
                    }
                }
            }
        }
?>

谁能帮我这个忙吗?

您可以通过以下方式更改SELECT查询:它使用INNER JOIN将来自特定学生的所有模块带入一个查询。 像这样:

SELECT * FROM modules
INNER JOIN relations ON relations.module_id = modules.module_id
WHERE relations.student_id = 1;

这样,它将带与ID为1的学生有关系的所有模块,假设您是要搜索其模块的学生。 然后,您只需遍历结果数组并从所需的模块中获取值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM