各位高手,小弟是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>
輸出內容為:
我想問?要怎讓輸出表格中的店家可以利用mysql查詢,讓shop_order資料表中的shop_id欄位可以轉換成shop資料表中的shop_name欄位呢?
可以使用 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'];
就能取得商店名字