discuz如何通过数据库批量替换/删除修改数据内容
客户的网站发现无意中发现论坛某个栏目的贴子被批量插入广告了。一个一个的删除太费劲,只能在数据库批量替换删除了。Discuz X3.X论坛后台提供数据库SQL语句操作的功能,但是默认情况下出于安全考虑,该功能是被关闭的,所以得先修改下配置文件,方法如下:(这破程序,官方都已经停止更新了,客户还在用由于客户没有技术也不想多花钱所以找我帮忙)找到论坛程序文件config/config_global.php,用记事本打开该文件,然后查找$_config[‘security’][‘querysafe’][‘status’]将其设置为0,继续查找$_config[‘admincp’][‘runquery’]将其设置为1即可。(出于安全考虑,建议执行SQL语句完毕后将这两个参数的值再改回来)然后进入管理后台→站长→数据库→升级 执行以下代码:UPDATE pre_forum_post SET message=REPLACE(message,'需要替换的内容','替换后的内容');-- 替换主题帖关键词UPDATE dz_forum_post
SET message = REPLACE(message, '需要替换的内容', '替换后的内容')
WHERE fid = 60 AND first = 1;
我这里需要替换的字符为:ШШ那么就执行以下代码。
https://www.amitufo.net/source/plugin/aljtpbdh/img/20250719/1752885368-3807.jpghttps://www.amitufo.net/source/plugin/aljtpbdh/img/20250719/1752885368-5653.jpg替换成功后,别忘记把配置文件里面修改的两项恢复回来。注意:在论坛后台或者phpmyadmin执行SQL语句,操作前请先备份数据库!如果是Discuz!7.2及以前的版本这种更古老的版本请使用以下语句:update cdb_posts set message = replace(message, 'userdirs/a/1/5z6z/attachments', 'attachments');适用于Discuz! Xupdate pre_portal_article_content set content = replace(content,'原内容','替换内容');说明如下:update 就是更新的意思pre_portal_article_content 就是要替换的表,这个是门户的文章内容set 就是设置的意思content 就是pre_portal_article_content 里的字段,这里面是保存文章内容的replace 就是替换的意思'原内容' 引号里的内容就是需要替换的'替换内容'引号里的内容就是要替换后的替换其他内容方法和原理都是一样的,就是改下表,字段,内容
-- 更新 fid=60(目标板块)的统计数据
UPDATE dz_forum_forum
SET threads = (SELECT COUNT(*) FROM dz_forum_thread WHERE fid = 60),
posts = (SELECT SUM(replies + 1) FROM dz_forum_thread WHERE fid = 60)
WHERE fid = 60;DELETE p FROM dz_forum_post p
JOIN dz_forum_thread t ON p.tid = t.tid
WHERE t.fid = 91
AND p.message LIKE '%http://datui11.lofter.com/%';DELETE t
FROM dz_forum_thread t
LEFT JOIN dz_forum_post p ON t.tid = p.tid
WHERE t.fid = 91-- 指定要操作的版块ID
AND p.pid IS NULL; -- 筛选出没有任何帖子的主题批量删除指定版块,帖子内容带有' 指定文字'的帖子,更新版块统计数据
删除帖子标题带有' 指定文字'的帖子
DELETE p FROM dz_forum_post p
JOIN dz_forum_thread t ON p.tid = t.tid
WHERE t.fid = 2 AND t.subject LIKE '%2017%';
页:
[1]