1

我有一些代码(见下文)用所有记录填充表。但是,我想用存储在另一个表中的实际名称替换为 site_id 显示的 ID。site_id例如是名为 的表中的主键,sites_tbl我想提取关联并将其显示在表中,而不是作为外键sitename来自的 ID 。sheets_tbl我假设我需要做某种循环,其中 $data 变量中的 foreach site_id 选择sitename Where site_id = the $row['site_id']但是我无法让它工作。

$sql  = "SELECT * FROM sheet_tbl";
$stmt = $conn->prepare($sql);
$stmt->execute();
$data = $stmt->fetchAll();


  <?php foreach ($data as $row): ?>
    <tr>
        <td><?=$row['sheet_id']?></td>
        <td><?=$row['username']?></td>
        <td><?=$row['site_id']?></td>
   </tr>
4

2 回答 2

2

我会建议一个非常简单的 SQL 连接。假设站点名称sitename 在 sites_tbl 中:

$sql  = "SELECT sheet.sheet_id, sheet.username, site.sitename FROM sheet_tbl S
       JOIN sites_tbl ST ON ST.site_id = S.site_id ";
$stmt = $conn->prepare($sql);
$stmt->execute();
$data = $stmt->fetchAll();


  <?php foreach ($data as $row): ?>
    <tr>
        <td><?=$row['sheet_id']?></td>
        <td><?=$row['username']?></td>
        <td><?=$row['sitename']?></td>
   </tr>

因此,现在您不仅拥有其中的数据,sheet_tbl而且还拥有sites_tbl您现在可以直接使用的相关数据。

在此处阅读有关联接的更多信息:http: //www.w3schools.com/sql/sql_join.asp

于 2013-08-08T10:14:41.837 回答
1

你可以join把桌子放在一起;

select  sheet.sheet_id
,       sheet.username
,       site.sitename
from    sheet_tbl sheet
join    sites_tbl site
on      sheet.site_id = site.site_id
于 2013-08-08T10:15:34.593 回答