【问题标题】:How to retrieve data from a one to many sql relationship using PHP如何使用 PHP 从一对多 sql 关系中检索数据
【发布时间】:2020-05-31 06:48:13
【问题描述】:

我有两张桌子。一个称为“员工”,并有一个名为“角色”的列。我有另一个名为“role”的表,其中有两列“role_id”和“name”。

通过 phpmyadmin 进入关系视图并选择适当的设置,我已经在 MySQL 中用外键(我认为!)链接了两者。

现在在 PHP 中我有以下代码:

$employees = "SELECT employee_id, first_name, last_name, role 
                 FROM employee 
                 WHERE status = 1"; 
$employee = mysqli_query($link, $employees);

foreach ($employee as $employeeInfo) {
    <?php echo $employeeInfo['role'];?>
}

但是,这会返回我分配给员工表中角色的编号。不是链接表中的名称。

我认为这与必须使用 JOIN 条件有关,即 PHP 代码。然而,做一些实验只会让我得到空白的结果。

在这种情况下,你有什么从第二个表中输出角色名称的技巧吗?

谢谢

【问题讨论】:

  • Mysql Join 是要走的路,介意分享一下您尝试过的方法,以便我们了解问题所在?
  • 参考MySQL join
  • SELECT employee_id, first_name, last_name, role FROM employee WHERE status = 1 JOIN role as name ---- 我遇到的一个问题是我真的不知道如何使用 join。好像可能会影响输出,所以我不能再使用mysqli_query了?
  • stackoverflow.com/questions/6294778/… 可能值得一读,以了解有关联接类型的更多信息。

标签: php mysql join


【解决方案1】:

内连接应该真的有用...

SELECT employee_id, first_name, last_name, role.name as role 
    FROM employee 
    INNER JOIN role ON employee.role = role.role_id 
    WHERE status = 1;

【讨论】:

    【解决方案2】:

    使用 join 获取角色的名称。

    $employees = "SELECT a.employee_id, a.first_name, a.last_name, b.name as role 
                     FROM employee a join role b on a.role = b.role_id
                     WHERE a.status = 1"; 
    $employee = mysqli_query($link, $employees);
    
    foreach ($employee as $employeeInfo) {
        echo $employeeInfo['role'];
    }
    

    【讨论】:

      猜你喜欢
      • 2017-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多