【问题标题】:Replacing a pulled SQL ID value with its name from another table用另一个表中的名称替换提取的 SQL ID 值
【发布时间】:2013-08-08 10:08:26
【问题描述】:

我有一些代码(见下文)用所有记录填充表。但是,我想用存储在另一个表中的实际名称替换为 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>

【问题讨论】:

    标签: php sql loops pdo foreign-keys


    【解决方案1】:

    我会建议一个非常简单的 SQL 连接。假设sites_tbl中的站点名称是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

    【讨论】:

      【解决方案2】:

      你可以join桌子一起;

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多