答案:Discuz帖子数据存储在pre_forum_post和pre_forum_thread表中,前者含帖子内容(message字段),后者存主题信息;通过phpMyAdmin或mysqldump备份这两张表可完整保存帖子内容,注意表前缀和编码设置。

Discuz 的帖子数据主要存储在数据库的两个核心表中:一个是帖子列表信息,另一个是帖子内容。不同版本的 Discuz(如 X2、X3 系列)结构基本一致。
Discuz 帖子相关的主要数据表
1. `pre_forum_post` 表 这是存放所有帖子(包括主题帖和回复帖)的核心表。每条记录代表一个帖子,包含以下关键字段:
- pid:帖子的唯一 ID
- tid:所属主题的 ID
- fid:所属版块的 ID
- author / authorid:发帖人信息
- subject:标题(仅主题帖有)
- message:帖子的正文内容
- dateline:发布时间
2. `pre_forum_thread` 表 这个表存储的是“主题”信息,即每个话题的概括数据,比如主题标题、作者、回复数等。它与 `pre_forum_post` 中的 tid 关联。
如何备份帖子内容
要完整备份帖子内容,建议从数据库层面操作,确保数据不丢失。
方法一:使用 phpMyAdmin 导出数据表
- 登录到你的数据库管理工具(如 phpMyAdmin)
- 选择 Discuz 使用的数据库
- 找到 `pre_forum_post` 和 `pre_forum_thread` 表
- 勾选这两个表,点击“导出”
- 选择“自定义”方式,格式推荐 SQL,勾选“包含 DROP TABLE”语句以便还原
- 执行导出并保存为本地文件
方法二:使用 mysqldump 命令行备份
如果你有服务器权限,可以运行以下命令:
mysqldump -u用户名 -p 数据库名 pre_forum_post pre_forum_thread > discuz_posts_backup.sql输入密码后,会生成一个包含两张表的 SQL 备份文件。
方法三:通过 Discuz 后台备份(部分数据)
Discuz 后台的“数据备份”功能主要用于备份整个论坛配置和部分结构,但不会单独导出帖子内容为可读格式。适合做整站恢复,不适合提取内容。
注意事项
表前缀可能不是 `pre_`,具体要看你安装时设置的表前缀(可在 `config/config_global.php` 中查看 `tablepre` 配置项)。
如果只想备份特定主题或板块的内容,可以在导出时加 WHERE 条件,例如只导出某个 tid 的帖子:
SELECT * FROM pre_forum_post WHERE tid = 12345;然后将查询结果导出为 SQL 或 CSV。
基本上就这些。只要拿到 `pre_forum_post` 表里的 `message` 字段,你就拿到了所有帖子正文内容。备份时注意编码(通常是 utf8mb4),避免乱码。










