我正在尝试执行一个Sql查询,该查询依赖于每个循环的另一个sql查询的输出。
我有3本书,学生和借书。
书籍表包含所有书籍的完整详细信息(b_id是主键),学生具有所有学生的完整详细信息(s_id作为主键),借用的是一个表,其中s_id和b_id为外键,每个条目都是当学生借书时创建。
这种关系是一对一的,即学生可以借一本或多本书,但一本书不能与一本以上的学生一起借书。因此,我的b_id在表索引中是唯一的。
我的计划是创建一个Html表,列出所有借书的学生,并点击此表中的学生,下拉表显示该学生借用的所有书籍。
我似乎无法运行SQL查询,因为我需要第一个Sql查询中的s_id才能使下一个查询工作。加上我的下拉表也无法正常运作。
请帮助查看以下代码
Click on a student to see books borrowed:
<table class="table2">
<thead>
<tr>
<th></th>
<th>Name</th>
<th>Mat number/th>
<th>Dept</th>
<th>level</th>
</tr>
</thead>
<tbody>
<?php
$sql_query = "SELECT student.* FROM student, borrowed where student.s_id = borrowed.s_id Group by student.s_id;";
$result = $db->query($sql_query);
if(mysqli_num_rows($result)>0){
$counter = 0;
while ($row = $result->fetch_array())
{
$counter++;
?>
<tr>
<td class="btn"><?php echo $counter;?></td>
<td><?php echo $row['name'];?></td>
<td><?php echo $row['matNo'];?></td>
<td><?php echo $row['Dept'];?></td>
<td><?php echo $row['level'];?></td>
</tr>
<tr>
<th class="expand1"></th>
<th class="expand1">Title</th>
<th class="expand1">Author</th>
<th class="expand1">Genre</th>
<th class="expand1">ISBN</th>
</tr>
<tr><?php
foreach($row as $studentid){
$sql = "SELECT books.*
FROM books
inner Join borrowed on books.b_id = borrowed.b_id
WHERE borrowed.s_id = $studentid";
$result2= $dbs->query($sql);
while( $row2 = $result2->fetch_array()){
?>
<td class="expand1"><?php echo $row2['title'];?></td>
<td class="expand1"><?php echo $row2['author'];?></td>
<td class="expand1"><?php echo $row2['genre'];?></td>
<td class="expand1"><?php echo $row2['isbn'];?></td>
</tr>
<?php
}
}
}
}
$result->close();
$dbs->close();
?>
</table>
这是我创建切换/可折叠表的脚本:
<script>
$(document).ready(function(){
$(".btn").click(function(){
$(".expand1").toggle();
});
$(".btn2").click(function(){
$(".expand2").toggle();
});
})
</script>
答案 0 :(得分:1)
第二个查询不需要处于循环中,您可以在第二个查询的where子句中使用第一个查询s_id
$sql = "SELECT books.*
FROM books
inner Join borrowed on books.b_id = borrowed.b_id
WHERE borrowed.s_id = {$row['s_id']}";
$result2= $dbs->query($sql);
while( $row2 = $result2->fetch_array()){
?>
您还必须删除以下其中一个结束}