将提取的SQL ID值替换为另一个表中的名称


Replacing a pulled SQL ID value with its name from another table

我有一些代码(见下文),它用所有记录填充一个表。然而,我想用存储在另一个表中的实际名称替换为site_ID提供的ID。例如,site_id是一个名为sites_tbl的表中的主键,我想提取相关的sitename并在表中显示它,而不是将来自sheets_tbl的ID作为外键。我想我需要做一些循环,其中$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>

我建议使用一个非常简单的SQL联接。假设站点名称为sitename

$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

您可以将表join放在一起;

select  sheet.sheet_id
,       sheet.username
,       site.sitename
from    sheet_tbl sheet
join    sites_tbl site
on      sheet.site_id = site.site_id