您好我知道如何使用关于select,join,fetch
的基本SQL
但是我不知道如何在我的网站上获取这样的内容(见截图)
来自截图它也有列room_number。
<table>
<tr>
<td>room no.</td>
<td>room name</td>
</tr>
<?php
$sql = SELECT * FROM si_room;
$query = $db->query($sql);
while($row = $query->fetch(PDO::FETCH_ASSOC))
{ ?>
<tr>
<td><?php echo ????? ; ?></td>
<td><?php echo ?????; ?></td>
</tr>
<?php } ?>
</table>
更新:
我尝试使用此代码
<?php
$sql = "SELECT * FROM si_room";
$querymain = $db->query($sql)->fetchAll(PDO::FETCH_GROUP);
?>
<table>
<tr>
<td>room no.</td>
<td>room_name</td>
</tr>
<?php
foreach ($querymain as $list_id => $list_data)
{
echo "<tr>";
echo "<td> floor ".$list_data[0]['room_floor']."<br>";
foreach ($list_data as $row)
{
echo $row['room_no']."</td>";
echo "<td>".$row['room_name']."</td>";
}
} ?>
</tr>
</table>
但结果是
2楼
201 |房间A
2楼
202 |房间B
3楼
301 |房间E
3楼
302 |房间F
那不是我想要的。
答案 0 :(得分:2)
幸运的是,您正在使用已经具有此功能的PDO,它可以完全按照您的需要进行操作 - 根据某些列对数据进行分组。
PDO can group results into the nested arrays,基于所选的第一个字段。因此,您需要将列表ID列为字段列表中的第一个字段,然后使用上述获取模式的fetchAll()
获取行:
$sql = "select room_floor, room_name, room_no from si_room";
$building = $dbh->query($sql)->fetchAll(PDO::FETCH_GROUP);
现在你得到一个整洁的嵌套数组,你的行按列表ID分组!
为了使输出整齐,你必须使用两个嵌套的foreach运算符
foreach ($building as $floor_no => $rooms)
{
echo $floor_no."\n";
foreach ($rooms as $row)
{
echo $row['room_name']."\n";
}
}