php - 显示名称而不是来自不同表的 ID

标签 php mysql

我有 2 个表:

  • 类别 具有主键ID 和列名称
  • Employee 具有主键 ID 和列 Category_id

注意:Category_id 现在可以正确显示 ID

我想为 Employee 的输出显示 Name 而不是 ID

尝试:

$categ = mysql_query("SELECT * FROM employee WHERE id = '" . $_GET['id'] . "'");
$rows = array();

while ($row = mysql_fetch_assoc($categ)) {
  $website_cat = $row;
}

类别表:

+----+----------------+
| ID | Name           |
+----+----------------+
| 23 | Manager        |
| 10 | Boss           |
| 14 | Worker         |
| 41 | Another        |
+----+----------------+

员工表:

+----+----------------+
| ID | Category_id    |
+----+----------------+
|  1 | Manager        |
|  2 | Boss           |
|  3 | Worker         |
|  4 | Another        |
+----+----------------+

输出:

echo $website_cat['category_id'];

最佳答案

您要查找的 SQL 关键字是 JOIN。您的查询可能是这样的:

SELECT * FROM employee INNER JOIN category ON employee.category_id = category.id WHERE id = ...

或者,更易读:

SELECT
  *
FROM
  employee
  INNER JOIN category
    ON employee.category_id = category.id
WHERE
  id = ...

(注意:我故意删除了 WHERE 子句的最后一点,因为我不习惯将 SQL 注入(inject)漏洞放在答案中。Please read this 以了解正确执行的一些基础知识涉及用户输入的 SQL 查询。目前您的代码很容易受到一种非常常见的攻击形式。)

由于您的一些列共享相同的名称,您甚至可能想要更明确地请求它们:

SELECT
  employee.id AS employee_id,
  category.id AS category_id,
  category.name AS category_name
FROM
  employee
  INNER JOIN category
    ON employee.category_id = category.id
WHERE
  id = ...

然后在您的代码中您可以访问这些字段:

employee_id, category_id, category_name

所以你可以输出你想要的值:

echo $website_cat['category_name'];

关于php - 显示名称而不是来自不同表的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35896696/

相关文章:

javascript - 仅使用 Electron (Atom shell) 和 PHP+mysql 服务器的身份验证表单

php - xdebug 中的配置参数,用于允许远程计算机上的多个主机

php - CRUD Laravel 5如何链接到资源 Controller 的销毁?

php - 如何让文本框变回空白

MySQL5 - 检查模式中每列的大小

mysql - 如何从 mysql 表中选择随机列?

php - 如何从蛋糕查询数组中获取正常的 SQL 查询?

php - 在 PHP 中使用电子邮件和密码注册后无法登录

php - mySQLi_affected_rows 检查不起作用,或者是...?

c++ boost::archives和mySql BLOB,反序列化错误