我的数据库中有三个表。学生,模块和关系。关系表的每一行都包含一个学生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"];
}
}
}
}
?>
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:1)
您可以更改SELECT查询,使其使用INNER JOIN将特定学生的所有模块放在一个查询中。像这样:
SELECT * FROM modules
INNER JOIN relations ON relations.module_id = modules.module_id
WHERE relations.student_id = 1;
这样,它会带来所有与ID为1的学生有关系的模块,假设它是您希望搜索其模块的学生。 然后你只需遍历结果数组并从你想要的模块中获取值。