我在数据库中有两个表。
TABLE ROOM 包含以下列和数据
id(int) room_type(varchar) price(int) 1 single room 25000 2 double room 50000
TABLE ROOM_IMAGE 包含以下列和数据
id(int) image(varchar) room_id(int) 1 single.jpg 1 2 single1.jpg 1 3 double.jpg 2
当我使用以下PHP代码时:
<?php
$query = "SELECT a.room_type, s.image FROM room as a
JOIN room_image as s
ON a.id = s.room_id ";
?>
<?php if ($rooms = $mysqli->query($query)) { ?>
<?php while ($room = $rooms->fetch_object()) { ?>
<h4><?php echo $room->type; ?></h4>
<p><?php echo $room->image; ?></p>
<?php } ?>
<?php } ?>
我得到以下结果:
single room single.jpg single room single1.jpg double room double.jpg
但我希望我的结果显示如下
single room single.jpg single1.jpg double room double.jpg
所以有人可以帮我编写正确的php语法来产生所需的结果(最好使用join sql语句)
答案 0 :(得分:1)
首先根据房间类型为查询添加ORDER BY
子句。这将把每种类型的所有房间排成一行
$query = "SELECT a.room_type, s.image FROM room as a
JOIN room_image as s
ON a.id = s.room_id ORDER BY a.room_type";
然后,仅在之前未显示类型时显示。使用额外的变量来跟踪它。
<?php
$lastType="";
while ($room = $rooms->fetch_object())
{
if($lastType!=$room->type)
{
echo "<h4>",$room->type,"</h4>";
}
echo "<p>",$room->image,"</p>";
$lastType=$room-type; // This variable keeps track of room type display
}
?>
答案 1 :(得分:0)
而不是使用连接查询。只需将图像添加到房间表下的字段中,只查询一个表。
<强>数据库:强>
id(int) room_type(varchar) price(int) images(varchar)
1 single room 25000 ["single.jpg","single1.jpg"]
2 double room 50000 ["double.jpg"]
<强> PHP:强>
$images = json_decode($room->image);
foreach($images as $image){
echo $image;
}