gpt4 book ai didi

php - 使用嵌套循环循环访问多个数据库表?

转载 作者:行者123 更新时间:2023-11-29 11:01:27 24 4
gpt4 key购买 nike

我的数据库中有三个表。学生、模块和关系。关系表的每一行都包含一个学生 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 的学生有关系的所有模块,假设这是您想要通过其模块搜索的学生。然后,您只需迭代结果数组并从所需的模块中获取值。

关于php - 使用嵌套循环循环访问多个数据库表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42159113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com