我有两张桌子:
教室(id,姓名),有13项记录。
每个教室有两个记录的部分(id,name,class_id)。
我想用php mysql显示每个教室教室表中的所有部分。
我有两个查询,每个表都有一个完全连接。
SELECT * FROM classrooms
JOIN sections ON sections.class_id=classrooms.id
GROUP BY(sections.class_id)
SELECT * FROM sections
JOIN classrooms ON classrooms.id=sections.class_id 我的代码如下:
<?php foreach($classrooms as $classe): ?>
<div><?php echo $classe['name']; ?></div>
<?php foreach($sections as $section): ?>
<?php if($section['class_id'] == $classe['id']) : ?>
<div class="">
<div><?php echo $section['name']; ?></div>
</div>
<?php endif ?>
<?php endforeach ?>它显示了第一个教室的两个部分,其他所有的教室都是空的。
谢谢
发布于 2022-01-22 15:43:41
编辑编辑:好的,您的查询不应该返回查询本身,而是返回数据库中的项(如您的第二个注释中提到的)。也许可以检查数据库函数本身以及从中得到了什么。如果你得到一个数组,你可以循环它。您的查询本身(如您的第4条评论中所述)看起来很好。但他们似乎没有像前面所说的那样返回正确的值。或者共享数据库功能?
发布于 2022-02-22 14:24:43
我找到了解决办法。这个问题是在sql查询中出现的,所以在进行了多次重新查询之后,我将它(代码)更改为:
$sql = "SELECT ac.`classe_name`, `section_name`, `classe_id` FROM `allclasses` ac JOIN `sections` sc ON sc.`classe_id`=ac.id";
$result = $db->query($sql);
$classes = $result->fetchAll(PDO::FETCH_GROUP | PDO::FETCH_ASSOC);并认为:
foreach($classes as $classe => $sections)
echo $classe;
foreach($sections as $section)
echo $section['section_name']
endforeach
endforeachhttps://stackoverflow.com/questions/70814059
复制相似问题