iT邦幫忙

2

PHP foreach 出欄位內容後,如何把欄位編號轉成實際名稱?

  • 分享至 

  • xImage

各位高手,小弟是php&mysqli的初心者,請教一下:
我有兩個資料表
1.shop_order:欄位(id,shop_id,create_name,create_time)
2.shop:欄位(id,shop_name)

<?php

require_once 'php/conn.php';

$sql = "SELECT * FROM shop_order";
if ($result = mysqli_query($_SESSION['link'], $sql)) {
    $rows = mysqli_fetch_all($result, MYSQLI_ASSOC);
}
?>
<table border="1">
    <thead>
        <th>編號</th>
        <th>店家</th>
        <th>人員</th>
        <th>時間</th>
        </tr>
    </thead>
    <tbody>
        <?php if (!empty($rows)): ?>
            <?php foreach ($rows as $row): ?>
                <tr>
                    <td><?php echo $row['id']; ?></td>
                    <td><?php echo $row['shop_id'];?></td>
                    <td><?php echo $row['create_name'];?></td>
                    <td><?php echo $row["create_time"];?></td>
                </tr>
                <?php endforeach; ?>
            <?php else: ?>
            <tr>
                <td colspan="6">無資料</td>
            </tr>
            <?php endif; ?>
    </tbody>
</table>

輸出內容為:
https://ithelp.ithome.com.tw/upload/images/20230127/20157235vArF5htTMz.jpg

我想問?要怎讓輸出表格中的店家可以利用mysql查詢,讓shop_order資料表中的shop_id欄位可以轉換成shop資料表中的shop_name欄位呢?
https://ithelp.ithome.com.tw/upload/images/20230127/201572351oNANi3lrs.jpg

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
cyanqazs
iT邦新手 5 級 ‧ 2023-02-07 11:25:35

可以使用 join 來一次取出商店名稱,使用方式可以參考這篇文章
[Day19] MySQL 的 JOIN

$sql = "SELECT * FROM shop_order";

這段可以改成

$sql = 'SELECT o.*, s.shop_name FROM shop_order o JOIN shop s ON o.shop_id = s.id';

這樣取值時,就可以透過

echo $row['shop_name'];

來取得商店名字

而如果兩個 table 的欄位名稱有衝突,可以用 as 解決問題,像是這樣

$sel = 'SELECT o.*, s.shop_name as shopName FROM shop_order o JOIN shop s ON o.shop_id = s.id';

在這情況下,透過

echo $row['shopName'];

就能取得商店名字

我要發表回答

立即登入回答