立即注册

微信登录

只需一步,快速开始

QQ登录

只需一步,快速开始

无量觉社区



会员资源切换至【手机版】
开启左侧

[discuz] discuz如何通过数据库批量替换/删除修改数据内容

[复制链接]
发表于 2025-7-19 08:36:26 | 显示全部楼层 |阅读模式
客户的网站发现无意中发现论坛某个栏目的贴子被批量插入广告了。一个一个的删除太费劲,只能在数据库批量替换删除了。Discuz X3.X论坛后台提供数据库SQL语句操作的功能,但是默认情况下出于安全考虑,该功能是被关闭的,所以得先修改下配置文件,方法如下:(这破程序,官方都已经停止更新了,客户还在用由于客户没有技术也不想多花钱所以找我帮忙)
找到论坛程序文件config/config_global.php,用记事本打开该文件,然后查找$_config[‘security’][‘querysafe’][‘status’]将其设置为0,继续查找$_config[‘admincp’][‘runquery’]将其设置为1即可。(出于安全考虑,建议执行SQL语句完毕后将这两个参数的值再改回来)
然后进入管理后台→站长→数据库→升级 执行以下代码:
  1. UPDATE pre_forum_post SET message=REPLACE(message,'需要替换的内容','替换后的内容');
复制代码
  1. -- 替换主题帖关键词
  2. UPDATE dz_forum_post
  3. SET message = REPLACE(message, '需要替换的内容', '替换后的内容')
  4. WHERE fid = 60 AND first = 1;
复制代码


我这里需要替换的字符为:ШШ  那么就执行以下代码。

替换成功后,别忘记把配置文件里面修改的两项恢复回来。
注意:在论坛后台或者phpmyadmin执行SQL语句,操作前请先备份数据库!
如果是Discuz!7.2及以前的版本这种更古老的版本请使用以下语句:
update cdb_posts set message = replace(message, 'userdirs/a/1/5z6z/attachments', 'attachments');
适用于Discuz! X
update pre_portal_article_content set content = replace(content,'原内容','替换内容');
说明如下:
update 就是更新的意思
pre_portal_article_content 就是要替换的表,这个是门户的文章内容
set 就是设置的意思
content 就是pre_portal_article_content 里的字段,这里面是保存文章内容的
replace 就是替换的意思
'原内容' 引号里的内容就是需要替换的
'替换内容'引号里的内容就是要替换后的
替换其他内容方法和原理都是一样的,就是改下表,字段,内容



主题推广




回复

使用道具 举报

 楼主| 发表于 2026-1-1 13:43:02 | 显示全部楼层
  1. -- 更新 fid=60(目标板块)的统计数据
  2. UPDATE dz_forum_forum
  3. SET threads = (SELECT COUNT(*) FROM dz_forum_thread WHERE fid = 60),
  4.     posts = (SELECT SUM(replies + 1) FROM dz_forum_thread WHERE fid = 60)
  5. WHERE fid = 60;
复制代码
  1. DELETE p FROM dz_forum_post p
  2. JOIN dz_forum_thread t ON p.tid = t.tid
  3. WHERE t.fid = 91
  4.   AND p.message LIKE '%http://datui11.lofter.com/%';
复制代码
  1. DELETE t
  2. FROM dz_forum_thread t
  3. LEFT JOIN dz_forum_post p ON t.tid = p.tid
  4. WHERE t.fid = 91  -- 指定要操作的版块ID
  5.   AND p.pid IS NULL; -- 筛选出没有任何帖子的主题
复制代码
批量删除指定版块,帖子内容带有' 指定文字'的帖子,更新版块统计数据


删除帖子标题带有' 指定文字'的帖子
  1. DELETE p FROM dz_forum_post p
  2. JOIN dz_forum_thread t ON p.tid = t.tid
  3. WHERE t.fid = 2 AND t.subject LIKE '%2017%';
复制代码


回复 支持 反对

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 立即注册

切换至【手机版】|主站|Archiver| Amituforum 无量觉社区

JS of wanmeiff.com and vcpic.com Please keep this copyright information, respect of, thank you!JS of wanmeiff.com and vcpic.com Please keep this copyright information, respect of, thank you!

|网站地图

GMT+8, 2026-2-4 12:01 , Processed in 0.260564 second(s), 11 queries , Redis On.

Powered by Discuz! X3.4

© 2001-2013 Discuz Team.

快速回复 返回顶部 返回列表