显示不同表中的名称而不是 ID

Tes*_*PRK 2 php mysql

我有 2 张桌子:

  • Category带主键ID和列Name
  • Employee带主键ID和列Category_id

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

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

试图:

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

while ($row = mysql_fetch_assoc($categ)) {
  $website_cat = $row;
}
Run Code Online (Sandbox Code Playgroud)

Category桌子:

+----+----------------+
| ID | Name           |
+----+----------------+
| 23 | Manager        |
| 10 | Boss           |
| 14 | Worker         |
| 41 | Another        |
+----+----------------+
Run Code Online (Sandbox Code Playgroud)

Employee桌子:

+----+----------------+
| ID | Category_id    |
+----+----------------+
|  1 | Manager        |
|  2 | Boss           |
|  3 | Worker         |
|  4 | Another        |
+----+----------------+
Run Code Online (Sandbox Code Playgroud)

输出:

echo $website_cat['category_id'];
Run Code Online (Sandbox Code Playgroud)

Dav*_*vid 5

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

SELECT * FROM employee INNER JOIN category ON employee.category_id = category.id WHERE id = ...
Run Code Online (Sandbox Code Playgroud)

或者,更易读:

SELECT
  *
FROM
  employee
  INNER JOIN category
    ON employee.category_id = category.id
WHERE
  id = ...
Run Code Online (Sandbox Code Playgroud)

(注意:我WHERE故意删除了该子句的最后一位,因为我不愿意将 SQL 注入漏洞放入答案中。 请阅读本文以了解正确执行涉及用户输入的 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 = ...
Run Code Online (Sandbox Code Playgroud)

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

employee_id, category_id, category_name
Run Code Online (Sandbox Code Playgroud)

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

echo $website_cat['category_name'];
Run Code Online (Sandbox Code Playgroud)