Php 循环浏览数据库表数据并以适当的格式显示

Php 循环浏览数据库表数据并以适当的格式显示,php,mysql,Php,Mysql,数据库中有两个表 桌子室有以下列和数据 id(int) room_type(varchar) price(int) 1 single room 25000 2 double room 50000 id(int) image(varchar) room_id(int) 1 single.jpg 1 2

数据库中有两个表

桌子室有以下列和数据

id(int) room_type(varchar) price(int) 1 single room 25000 2 double room 50000 id(int) image(varchar) room_id(int) 1 single.jpg 1 2 single1.jpg 1 3 double.jpg 2 id(内部)房间类型(varchar)价格(内部) 1间单人房25000 2间双人房50000 和桌子室\u图像具有以下列和数据

id(int) room_type(varchar) price(int) 1 single room 25000 2 double room 50000 id(int) image(varchar) room_id(int) 1 single.jpg 1 2 single1.jpg 1 3 double.jpg 2 id(int)图像(varchar)房间id(int) 1.jpg 1 2.1.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.jpg 单人房 single1.jpg 双人间 double.jpg 但我希望我的结果显示如下

single room single.jpg single1.jpg double room double.jpg 单人房 single.jpg single1.jpg 双人间 double.jpg
因此,有没有人可以帮助我编写正确的php语法来生成所需的结果(最好使用join sql语句)

首先根据房间类型在查询中添加一个
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
    } 
 ?>

而不是使用联接查询。只需将图像添加到room表下的字段中,然后只查询一个表

数据库:

id(int)    room_type(varchar)      price(int)    images(varchar)
 1           single room              25000         ["single.jpg","single1.jpg"]
 2           double room              50000         ["double.jpg"]
$images = json_decode($room->image);
foreach($images as $image){
  echo $image;
}
PHP:

id(int)    room_type(varchar)      price(int)    images(varchar)
 1           single room              25000         ["single.jpg","single1.jpg"]
 2           double room              50000         ["double.jpg"]
$images = json_decode($room->image);
foreach($images as $image){
  echo $image;
}

这将是一个糟糕的数据库设计,它将违反第一种无重复组的标准形式的数据库设计规则,并且表中的每个单元格都应该包含一个值。我看到数据库使用JSON数组会导致这样的事实,即将单个值存储到自己的表和记录中是荒谬的,并且在查询时会降低性能所有的价值观。顺便说一句,规则是注定要被打破的。无论如何,谢谢你的好主意@user2067005,可能会在其他时间使用它,但不是现在。再次谢谢你,没问题。老实说,最好按你自己的方式去做。更容易管理图片。非常感谢@Hanky웃 潘基。这很有道理。