带有ON DUPLICATE KEY UPDATE的SQL查询不起作用

时间:2012-05-07 01:21:20

标签: php mysql sql

我有一张包含个人资料的表格。如果有用户#:userId的配置文件,我想更新它。如果该用户没有配置文件,我想插入它。我尝试了这个SQL查询,但它不起作用:

    INSERT INTO profiles 
    SET name = :name, 
        website = :website, 
        bio = :bio 
    WHERE user = :userId 
    ON DUPLICATE KEY UPDATE 
        name = :name, 
        website = :website, 
        bio = :bio

'user'是主键

编辑:我在SQL中发现了一个错误,当它看起来像这样时,它运行得很好:

    INSERT INTO profiles 
    SET user = :userId,  -- <-- mistake was here
        name = :name, 
        website = :website, 
        bio = :bio 
    ON DUPLICATE KEY UPDATE 
        name = :name, 
        website = :website, 
        bio = :bio

谢谢大家!

1 个答案:

答案 0 :(得分:2)

您的INSERT语法不正确(它看起来像是修改后的UPDATE语句)。尝试类似:

INSERT INTO profiles (name, website, bio)
       VALUES (:name, :website, :bio)
  ON DUPLICATE KEY UPDATE website = :website, bio = :bio;

有关详细信息和示例,请参阅documentation for INSERT ... ON DUPLICATE KEY UPDATE