2017-02-19 27 views
2

你好,我知道如何使用基本的SQL關於選擇,加盟,取
但沒有想法如何獲取這樣到我的網站(見截圖)SQL PHP:如何選擇和獲取像這樣?

enter image description here

從截圖它欄目編號也是如此。

<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> 

UPDATE:

我嘗試用這個代碼

<?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 | ROOM A

floor 2

202 | ROOM B

3樓

301 | ROOM E

floor 3

302 |房間F

這不是我想要的。

+0

不你'si_room'表需要一個叫做'room_no'列將保持三位數的房間號碼? (201,202,301,302) – mickmackusa

+0

是的,它需要對不起 – doflamingo

+0

它不重複。我詢問異常選擇 – doflamingo

回答

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"; 
    } 
} 
相關問題