2010-10-02 126 views
0

我的MySQL查询没有正确更新我的数据库可以有人帮我解决这个问题我认为这与JOIN有关。MySQL更新问题

这是我的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" 
+5

在* *没有透露情况1,究竟是什么出了问题; 2.最终生成的SQL语句是什么样的;和3.你期望的结果。否则,我们会错过猜测的乐趣! – 2010-10-02 12:42:42

+0

@Pekka我的最后一次登录不会更新,我期待last_login更新登录时的时间。 – HELP 2010-10-02 12:44:37

+0

@needHELP你需要显示最终查询的实际值(而不是PHP变量) – 2010-10-02 12:46:07

回答

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

+0

原谅我的无知什么是T-SQL? – HELP 2010-10-02 13:43:09

+1

查看t-sql的完整详细信息http://en.wikipedia.org/wiki/Transact-SQL – Alpesh 2010-10-02 13:45:10

+0

您的我的F *** in HERO! – HELP 2010-10-02 13:47:19

0

在没有看到表或生成的SQL,我只是猜测这里,作为Peeka指出。

我的猜测是你的表中有数据允许(email = '" . $e . "' OR username = '" . $e . "')工作。但是,这是非常开放的 - 更新任何有电子邮件或用户名的记录。当你添加JOIN它更加严格 - 更新记录有这个电子邮件或用户名。

检查你的第二次更新,我敢打赌它没有更新你认为它的记录。如果是这样,我会说你的外键搞砸了,你没有用户和信息中的匹配数据。这些都会证明JOIN失败。

如果这没有帮助 - 发布生成的SQL和您的架构。