我的mysql查询没有正确更新我的数据库可以帮助我修复这个问题我认为它与JOIN有关。
这是我的mysql查询。
"UPDATE users
SET users.last_login = NOW()
FROM users JOIN info ON info.user_id = users.user_id
WHERE (info.email = '" . $e . "' OR users.username = '" . $e . "')
AND users.password = '" . $sha512 . "'
AND users.active IS NULL"
这是我使用JOIN之前的工作查询。
"UPDATE users SET last_login = NOW() WHERE (email = '" . $e . "' OR username = '" . $e . "') AND password = '" . $sha512 . "' AND active IS NULL"
答案 0 :(得分:0)
没有看到表格或生成的SQL,我只是在猜测,正如 Peeka 指出的那样。
我的猜测是你的表中有数据允许(email = '" . $e . "' OR username = '" . $e . "')
工作。但是,这是非常开放的 - 更新任何有电子邮件或用户名的记录。当您添加JOIN
更严格时 - 更新包含此电子邮件或用户名的记录。
检查你的第二次更新,我打赌它不会更新你认为的记录。如果是,我会说你的外键搞砸了,你没有用户和信息中的匹配数据。其中任何一个都会证明JOIN
失败。
如果这没有帮助 - 发布生成的SQL和架构。
答案 1 :(得分:0)
您的查询语法错误。 MySQL中跨表更新的语法有点多 与T-SQL不同。它应该如下。
UPDATE users JOIN info ON info.user_id = users.user_id
SET users.last_login = NOW()
WHERE (info.email = '" . $e . "' OR users.username = '" . $e . "')
AND users.password = '" . $sha512 . "'
AND users.active IS NULL
检查以下链接 -
http://blog.ookamikun.com/2008/03/mysql-update-with-join.html