2012-11-29 195 views
0

我會失明這裏......似乎無法找出錯誤在這個SQL:MySQL錯誤更新或插入失敗

INSERT INTO sankt_groups_order (
    parent_group_id, 
    child_group_id, 
    order 
) VALUES (?,?,?) 
ON DUPLICATE KEY UPDATE 
    order = ? 
; 

我收到此錯誤:

SQLSTATE[42000]: Syntax error or access violation: 
    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 'order) VALUES ('65',NULL,'3') ON DUPLICATE KEY UPDATE order = '3'' 

接下來這個SQL會做我的想法嗎?我需要它插入整行如果缺少和更新順序,如果它存在...我有一個索引使parent_group_idchild_group_id唯一。

回答

3

order是MySQL中的reserved word,你將不得不逃避它:

child_group_id, 
    `order` 
    ^-- ^--- backticks to escape 
) VALUES (?,?,?) 

,是的,它應該做你的想法。如果存在唯一/主鍵違例,則只會更改order字段。

+0

是的。謝謝你,似乎在做伎倆:)忘記了那些該死的保留字......我本來希望有一個更好的錯誤信息,儘管:) –

+0

不幸的是,這就是爲什麼他們保留。 mysql只會看到你寫的內容,並看到「order」,認爲「嗯,看起來像編碼器從字段列表跳轉到沒有from/where的order子句」 –

+0

啊當然。讓Marc感到自豪。謝謝! –