2017-02-07 97 views
1

几年来没有做任何编程,所以再次生锈。MySQL查询不起作用,INNER JOIN附近的语法错误

我有两个表users表和users_profiles表。我想更新users_profiles表,条件是user_uid在两个表(users.user_uidusers_profiles.user_uid)以及users.user_login = 'johndoe'users.user_uid = '11'之间匹配。

它会在一个PHP脚本来执行,所以johndoe的实际上是用户的用户名(无论是存储在会话和同为users_uid。对于simplicitity我追加的虚拟数据。

我运行phpMyAdmin的查询,并得到INNER附近有语法错误JOIN。我只是想不通我做错了什么(大概写了这完全是错误的),并花了几个小时试图解决它没有成功。

继承人我的SQL查询。

UPDATE 
     users_profiles 
    SET 
     users_profiles.user_fname = 'John', 
     users_profiles.user_lname = 'Doe', 
     users_profiles.user_gender = 'male' 
    INNER JOIN 
     users 
    ON 
     users.user_uid = users_profiles.user_uid 
    WHERE 
     users.user_login = 'johndoe' 
    AND 
     users.user_uid = '11' 

我得到的错误当通过phpmyadmin运行sql查询时。

#1064 - You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right syntax to use 
near 'ON users.user_uid, .user_uid FROM users_profiles WHERE 
users.user_login ' at line 7 

谢谢。

回答

0

尝试交换SETINNER JOIN如图所示,例如,在this SO answer(请给予好评参考,如果有用):

UPDATE 
     users_profiles p 
    INNER JOIN 
     users u 
    ON 
     u.user_uid = p.user_uid 
    SET 
     p.user_fname = 'John', 
     p.user_lname = 'Doe', 
     p.user_gender = 'male' 
    WHERE 
     u.user_login = 'johndoe' 
    AND 
     u.user_uid = 11 
+0

千恩万谢@StephanLechner,完美的作品。谢谢。 – PHPLOVER

1

试试这个:

UPDATE 
     users_profiles 
     INNER JOIN 
      users 
     ON 
      users.user_uid = users_profiles.user_uid 
    SET 
     users_profiles.user_fname = 'John', 
     users_profiles.user_lname = 'Doe', 
     users_profiles.user_gender = 'male' 
    WHERE 
     users.user_login = 'johndoe' 
    AND 
     users.user_uid = '11' 
+0

非常感谢,完美的作品,我接受@StephanLechner答案的基础上,他先发布它,但谢谢你永远不会少。 – PHPLOVER