【问题标题】:View data from relational table using foreign key使用外键查看关系表中的数据
【发布时间】:2016-04-06 13:48:41
【问题描述】:

试图通过 user_id 从 users 表中获取数据,user_id 是车辆表中的外键。该关系工作正常,就像我在车辆表中插入数据然后 user_id 也按预期插入时一样,但问题是当我想使用 user_id 从用户表中获取数据时。

我使用这个 SQL 查询来查看数据

 <?php 
  $qry = mysql_query("select vehicle. *, users.zip AS zip from vehicle  JOIN users ORDER BY id DESC ");
  while($data = mysql_fetch_array($qry))

 {?>


  <tr role="row" class="even">

      <td style="display:none;"><?php echo $data['id'];?></td>  

      <td class="sorting_1">  <?php $datess = $data['create_date'];
         $old_date_timestamp = strtotime($datess);
         echo date('m-d-Y', $old_date_timestamp);?>

      </td>
      <td><?php echo $data['bid_type'];?></td>

      <td><?php echo $data['zip'];?></td>
      <td>
        <a href="bid-detail.php?id=<?php echo base64_encode($data['id']);?>" class="btn btn-success btn-small">$ Make Offer</a>
      </td>

   </tr>

<?php
 }
 ?>

此查询显示数据,但它一次又一次地重复

任何人都可以帮助我解决这个问题或任何其他简单的解决方案。

【问题讨论】:

  • 您正在使用已弃用超过 5 年的数据库函数。这些函数甚至在当前版本的 PHP 中都不存在。停止使用 mysql_* 函数。
  • 需要指定加入条件;否则你会得到两个表的叉积。试试... JOIN users ON users.user_id = vehicles.user_id ORDER BY ... 并且不要使用mysql_* 函数。
  • @miken32 我正在更新网站所有者不想更新的网站
  • @DarwinvonCorax 显示此错误“'on clause' 中的未知列 'users.user_id'”
  • 使用表 users 中正确的列。我不得不猜测,因为你没有发布你的表结构。

标签: php mysql


【解决方案1】:

您的查询存在问题。

您必须在查询中添加 WHERE 子句,这将使您的父表的 PK 与子表的 FK 相匹配。

试试这个:

select v.*, u.zip AS zip from vehicle as v,users as u WHERE v.user_id=u.user_id ORDER BY v.id DESC

【讨论】:

  • 我很高兴@MuktoMona :)
【解决方案2】:

这个查询在我看来真的是错误的......

 "select vehicle. *, users.zip AS zip from vehicle  JOIN users ORDER BY id DESC "

这已合并两个表。要加入他们,请使用类似的东西

"select * from vehicles as v, users as u where v.id = u.vehicle_id order by id desc"

或类似的东西。您需要指定两个表,即 vehiclesusers 然后 join 它们在具有相同类型和希望的列上,其中相同类型在逻辑上意味着相同的事物,即如果它是车辆 ID 或用户 ID 等。

【讨论】:

    猜你喜欢
    • 2010-09-10
    • 2018-10-16
    • 2018-10-09
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多