Как я могу заменить HTML в MySQL? - PullRequest
2 голосов
/ 01 августа 2011

Я хочу найти и заменить (или, точнее, добавить) некоторый HTML в одном из моих полей базы данных MySQL, где поле содержит определенную строку текста.

Я могу успешно найти соответствующие записи, используяэтот запрос:

SELECT *
FROM `wp_posts`
WHERE `post_content` LIKE '%some phrase%'

Этот запрос возвращает все записи, к которым я хочу добавить HTML.

Поэтому я пытаюсь следующий запрос, чтобы добавить HTML, который я хочу использовать:

SELECT *
FROM `wp_posts`
WHERE `post_content` LIKE '%some phrase%'
UPDATE wp_posts SET post_content = REPLACE(post_content, '</strong></a>', '</strong></a>
<strong>Some additional piece of text</strong></p>')

Но возвращается ошибка:

#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 'UPDATE wp_posts SET post_content = INSERT(post_content, '&lt;/strong&gt;&lt;/a&gt;​', '&lt;/stro' at line 4

Полагаю, мне не нравится, как я отформатировал свой HTML, но как его отформатировать?

Ответы [ 5 ]

4 голосов
/ 01 августа 2011

вы пытаетесь выполнить два разных запроса. Я предполагаю, что вам нужно выполнить следующее:

UPDATE wp_posts SET post_content = REPLACE(post_content, '</strong></a>', '</strong></a>
<strong>Some additional piece of text</strong></p>') 
WHERE `post_content` LIKE '%some phrase%'
4 голосов
/ 01 августа 2011

смотреть ОБНОВИТЬ Синтаксис , должно быть похоже на

UPDATE wp_posts
SET post_content = REPLACE(post_content, '</strong></a>', '</strong></a>
<strong>Some additional piece of text</strong></p>')
WHERE `post_content` LIKE '%some phrase%'
0 голосов
/ 25 марта 2019

MySQL> = 5.5 предоставляет функции XML для решения вашей проблемы. Вы можете комбинировать функции ExtractValue, UpdateXML и REPLACE.

Ссылка: https://dev.mysql.com/doc/refman/5.5/en/xml-functions.html

0 голосов
/ 01 августа 2011

В контенте, который вы пытаетесь заменить, нет ничего плохого.Однако, как я понимаю, вы строите свой запрос на обновление неправильно: вы ставите SELECT прямо перед UPDATE запросом, вероятно, ожидая, что UPDATE коснется только строк SELECT ed.

Я думаю, что вы хотите это:

UPDATE wp_posts 
    SET post_content = REPLACE(
        post_content,
        '</strong></a>',
        '</strong></a><strong>Some additional piece of text</strong></p>'
    )
WHERE `post_content` LIKE '%some phrase%'
0 голосов
/ 01 августа 2011

Вы пытались использовать select как внутренний запрос? (При условии,

UPDATE wp_posts SET post_content = REPLACE(post_content, '</strong></a>', '</strong></a>
<strong>Some additional piece of text</strong></p>') 

WHERE id in (SELECT id
FROM `wp_posts`
WHERE `post_content` LIKE '%some phrase%')
...