SQL REPLACE не работает

0

Есть только два столбца, и я хочу ОБНОВИТЬ, только если menu_id существует. В противном случае я хочу вставить новую строку. Здесь мой запрос:

REPLACE `dol_subs_menu_access` 
SET `menu_id` = '{$aVars['menu_item']}',
`mlevels` = '{$sMemLevels}'

Это создает новую строку каждый раз. Что-то мне не хватает?

  • 1
    REPLACE в sql выполняет замену строки для подстроки в более длинной строке. Похоже, вы хотите UPDATE фактическое содержимое поля к чему-то еще, это правильно? И какую БД вы используете?
  • 1
    @JNK: см. Оператор MySQL REPLACE .
Показать ещё 6 комментариев
Теги:

2 ответа

2
Лучший ответ

Являются ли какие-либо из столбцов в вашем заявлении первичным ключом? Я предполагаю, что это не так, что означает REPLACE statement (чтобы не путать с функцией замены строк) необходимо определить, заменяя vs inserting...

2

Вы можете посмотреть синтаксис mySQL ON DUPLICATE KEY. Это позволит вам вставить запись или обновить запись, если она уже существует. Вам нужно будет включить первичный ключ в ваш запрос, хотя.

Вот пример запроса со страницы документации:

INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;

Я думаю, что это будет выглядеть примерно так для вашего запроса (сначала проверьте его)

INSERT INTO `dol_subs_menu_access` (menu_id,mlevels) 
       VALUES ('{$aVars['menu_item']}','{$sMemLevels}')
ON DUPLICATE KEY UPDATE mlevelsMemLevels='{$sMemLevels}';
  • 0
    или mlevelsMemLevels = VALUES(mlevelsMemLevels) , нет необходимости помещать строку дважды.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню