2016-04-04 4 views
0

MySql:SQL UPDATE или INSERT, если строка не существует

"UPDATE FYP_MilestoneNotes SET Notes = '$notes' WHERE UserID = $userID AND MilestoneID = $milestoneID" 

Когда эта строка не существует, я получаю сообщение об ошибке, как ожидается, как я могу изменить это, чтобы вставить строку с теми же значениями, если один еще не существует?

Я пробовал:

"INSERT INTO FYP_MilestoneNotes SET Notes = '$notes' 
           WHERE UserID = $userID 
           AND MilestoneID = $milestoneID 
           ON DUPLICATE KEY UPDATE FYP_MilestoneNotes 
           SET Notes = '$notes' 
           WHERE UserID = $userID 
           AND MilestoneID = $milestoneID 
           " 

не повезло

Я также попытался предложенный ниже:

У Вас есть ошибка в вашем SQL синтаксиса; в руководстве, соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать вблизи 'WHERE UserID = 2 И MilestoneID = 11 ON DUPLIC' в строке 1

INSERT INTO FYP_MilestoneNotes (Примечания) VALUES ('sdgfdgfd') Где Идентификатор_пользователя = 2 и MilestoneID = 11 пО DUPLICATE KEY UPDATE отмечает = 'sdgfdgfd', где USERID = 2 и MilestoneID = 11

+1

Быстрый поиск google показывает: http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html – apokryfos

+0

Вы хотите использовать 'INSERT INTO ... ON DUPLICATE KEY UPDATE' Docs : http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html – Mikey

+3

Возможный дубликат ["INSERT IGNORE" vs "INSERT ... ON DUPLICATE KEY UPDATE"] (http: //stackoverflow.com/questions/548541/insert-ignore-vs-insert-on-duplicate-key-update) – chris85

ответ

1

синтаксические ошибки, в соответствии с docs

 ON DUPLICATE KEY UPDATE FYP_MilestoneNotes 
           ^^^^^^^^^^^^^^^^^^ 

Вы не можете указать таблицу в разделе on duplicate.

insert также может НЕ имеют where положение:

 WHERE UserID = $userID 
      AND MilestoneID = $milestoneID 
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---completely illegal. 
+0

* «Вставка также не может иметь предложение where» * - Тем не менее, только два. –

+0

Gotta love load-cult programming ... –

+0

Расскажите мне об этом. –

0

Вы должны выполнить следующий запрос:

INSERT INTO FYP_MilestoneNotes (UserID, MilestoneID, Notes) 
VALUES (2, 11, 'sdgfdgfd') 
ON DUPLICATE KEY UPDATE Notes='sdgfdgfd' 

Вы не можете использовать INSERT .. ГДЕ

С MYSQL Руководство пользователя:

INSERT INTO table (a,b,c) VALUES (1,2,3) 
    ON DUPLICATE KEY UPDATE c=c+1; 
UPDATE table SET c=c+1 WHERE a=1; 
Смежные вопросы