2012-05-07 5 views
1

프로필이있는 테이블이 있습니다. user # : userId에 대한 프로필이 있으면 업데이트하려고합니다. 해당 사용자의 프로필이 없으면 프로필을 삽입하고 싶습니다. 나는이 SQL 쿼리를 시도했지만 작동하지 않았다 :중복 키 업데이트로 SQL 쿼리가 작동하지 않습니다.

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

'사용자가'기본 키

편집 : 그것은 다음과 같습니다 때 내 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

** 사용자 **는 기본 키이지만 쿼리에는 포함되어 있지 않습니다. – McGarnagle

답변

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을 참조하십시오.

+0

INSERT INTO ... SET 구문은 실제로 정확하며 작동합니다 (http://milov.nl/2836). 그러나이 구문을 ON DUPLICATE KEY UPDATE와 함께 사용하면 올바르지 않게됩니다. 그것은 MySQL의 "기능"입니까? – user1267570

+0

아, 프로필의 행을 사용자 ID에 "연결"해야합니다. – user1267570

+0

INSERT INTO ... SET은 표준 SQL이 아니며 Mysql 확장자 여야합니다. –

관련 문제