首页 > 代码

mysql批量删除所有文章某区间内不同的内容

【批量删除所有文章某区间内容】
例:某mysql数据内有几十万条数据,删除所有


<p class="txt">***</p>

内的内容,***的内容不同。也就是区间泛删除。

【MySQL 8.1以上才支持】


UPDATE wp_posts
SET post_content = REGEXP_REPLACE(
    post_content,
    '<p class="txt">.*?</p>',
    '',
    'gis'
)
WHERE post_content REGEXP '<p class="txt">.*?</p>';

【MySQL 8.0支持】


UPDATE wp_posts
SET post_content = REGEXP_REPLACE(post_content, '<p class="txt">[^<]*</p>', '')
WHERE post_content REGEXP '<p class="txt">[^<]*</p>';

你可以放一个临时 PHP 文件到 WordPress 根目录,运行一次,运行前请 备份数据库。修改完立即删除此 PHP 文件,避免被人恶意利用。


<?php
require_once('wp-load.php');
global $wpdb;
// 查询所有包含 <p class="txt"> 的文章
$posts = $wpdb->get_results("
    SELECT ID, post_content FROM {$wpdb->prefix}posts
    WHERE post_content LIKE '%<p class=\"txt\">%'
");
foreach ($posts as $post) {
    $old_content = $post->post_content;
    // 删除所有 <p class="txt">...</p> 结构
    $new_content = preg_replace('/<p class="txt">.*?<\/p>/s', '', $old_content);
    // 更新数据库
    if ($new_content !== $old_content) {
        $wpdb->update(
            "{$wpdb->prefix}posts",
            ['post_content' => $new_content],
            ['ID' => $post->ID]
        );
        echo "Updated post ID {$post->ID}<br>";
    }
}
echo "清理完毕。";


  • 服务器上mysql数据库很多,某个库把整台服务器拉爆了,如何定位找到罪魁?
  • 服务器上mysql数据库很多,某个数据库把整台服务器拉爆了,如何定位找到罪魁? 先在 MySQL 里把“正在烧 […]

  • mysql区间泛内容批量替换语句,且限定ID范围
  • 要求:要批量把文章id where id >= 587606 and id

  • mysql语句请尽量不使用ORDER BY RAND()
  • 不使用ORDER BY RAND() select id from `dynamic` order by ra […]

  • InnoDB删除数据后释放磁盘空间的方法
  • 最近发现mysql里的一个数据文件竟然高达150G,当时就懵了, 经过查文档发现原来,所有信息都存在这一个文件 […]

  • 批量删除wordpress内容,按标题内容字段字段长短
  • 批量删除文章,按标题内容字段字段长短, DELETE FROM wp_posts where length(p […]

  • 批量删除wordpress所有内容页里某个字符段前后的内容
  • 举个栗子一: 批量删除某个内容前的所有内容 例:删除表wp_posts 字段post_content 内容里所 […]