【问题标题】:How can I replace HTML in MySQL?如何在 MySQL 中替换 HTML?
【发布时间】:2011-10-17 10:26:42
【问题描述】:

我想在我的一个 MySQL 数据库字段中查找并替换(或更准确地说,追加)一些 HTML,其中该字段包含特定的文本字符串。

我可以使用这个查询成功找到相关记录:

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 格式,但它应该如何格式化?

【问题讨论】:

    标签: mysql html wordpress phpmyadmin mysql-error-1054


    【解决方案1】:

    MySQL >= 5.5 提供 XML 函数来解决您的问题。 您可以组合ExtractValueUpdateXMLREPLACE 函数。

    参考:https://dev.mysql.com/doc/refman/5.5/en/xml-functions.html

    【讨论】:

      【解决方案2】:

      您尝试替换的内容没有问题。但是,在我看来,您构建更新查询的方式错误:您在 UPDATE 查询之前放置了 SELECT,可能期望 UPDATE 只会触及 SELECTed 行。

      我想你想要的是这样的:

      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%'
      

      【讨论】:

      • 感谢您的所有回复,伙计们:-)
      【解决方案3】:

      您是否尝试过使用 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%')
      

      【讨论】:

        【解决方案4】:

        您正在尝试执行两个不同的查询。我的猜测是您需要执行以下操作:

        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%'
        

        【讨论】:

        • 太棒了!谢谢 - 我明白了我在那里尝试做的事情:-)
        【解决方案5】:

        UPDATE Syntax,需要点赞

        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%'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-04-29
          • 1970-01-01
          • 2023-03-30
          • 2012-06-10
          • 1970-01-01
          • 1970-01-01
          • 2022-12-05
          相关资源
          最近更新 更多