如何用INNER JOIN更新3个表?

时间:2016-02-28 16:59:10

标签: php sql

我有3个表格如下:

  1. 用户:

    • ID
    • 姓名(字符串)
    • ageID(int)
    • descID(int)
  2. users_age:

    • ageID(int)
    • age_group(string)
  3. users_desc:

    • descID(int)
    • desc_text(string)
  4. 现在,我有一个'edit'表单,它使用INNER JOIN在ageID和descID而不是ID中显示相应的字符串列。

    一个指示updateUser.php更新数据的按钮。我知道我可以用以下名称更新名称:

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

你可以做一些与其他表类似的事情。

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

<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'";