如何使用内部连接更新 3 个表


How to update 3 tables with INNER JOIN?

我有 3 个表,如下所示:

  1. 用户:

    • 身份证
    • 名称(字符串)
    • 年龄 ID (整数)
    • descID (int)
  2. users_age:

    • 年龄 ID (整数)
    • age_group(字符串)
  3. users_desc:

    • descID (int)
    • desc_text(字符串)

现在,我有一个"编辑"表单,它使用 INNER JOIN 在 ageID 和 descID 的位置显示相应的字符串列,而不是 ID。

还有一个按钮,指向更新用户.php以更新数据。我知道我可以通过以下方式更新名称:

$sql = "UPDATE users SET
        Name = '$uName',
        WHERE ID = '$uID'";

但是,当表单页面将字符串列发送到 updateUser.php 文件时,如何使用 age_group/desc_text 等效 ID 中的 ageID/descID 更新 USERS 表中的 ageID/descID(整数值)列?

我希望我的解释不是很混乱!

如果表中的字符串是唯一的(它们应该是唯一的),则可以更新到 SELECT 语句的输出

$sql = "UPDATE users
        SET ageID = (SELECT ageID FROM users_age WHERE age_group = '$uAgeString')
        WHERE ID = '$uID'";

您可以执行与另一个表类似的操作。

但是 - 最好从网页获取 ID。通常,您可以通过设置选项标记的值属性来执行此操作:

<select name='uAgeID'>
  <option value='1'>Young</option>
  <option value='2'>Middling</option>
  <option value='3'>Old</option>
</select>

这样你就可以有一个更简单的SQL语句:

$sql = "UPDATE users
        SET ageID = $uAgeString
        WHERE ID = '$uID'";