核心数据表
#@_guestbook (主留言表)
这个表存储了所有访客发布的原始留言信息,是留言板最主要的数据表。

(图片来源网络,侵删)
| 字段名 | 数据类型 | 说明 | 示例值 |
|---|---|---|---|
id |
mediumint(8) unsigned | 主键,自增ID,每条留言的唯一标识。 | 1 |
uid |
mediumint(8) unsigned | 用户ID,发布留言的会员ID,如果为游客,则为0。 | 0 (游客) 或 100 (会员ID) |
uname |
varchar(20) | 用户名,发布留言的访客或会员名。 | '张三' |
email |
varchar(50) | 电子邮箱,访客填写的邮箱。 | 'zhangsan@example.com' |
homepage |
varchar(100) | 个人主页,访客填写的网址。 | 'http://www.example.com' |
ip |
varchar(20) | IP地址,发布留言时访客的IP地址。 | '192.168.1.100' |
dtime |
int(10) unsigned | 发布时间,Unix时间戳格式。 | 1678886400 |
ischeck |
smallint(6) | 审核状态。-1: 删除0: 待审核1: 已通过 |
1 |
mid |
mediumint(8) unsigned | 模块ID,标识留言属于哪个模块,通常为1表示留言板。 | 1 |
msg |
mediumtext | ,访客输入的留言正文,支持HTML代码。 | '你好,这是一个留言测试!' |
arctitle |
varchar(80) | 关联文章标题,如果留言是针对某篇文章的,这里会存储文章标题。 | '' (留言板留言通常为空) |
type |
varchar(30) | 留言类型,用于区分不同类型的留言,如普通留言、反馈等。 | 'feedback' |
#@_guestbookbook (回复表)
这个表存储了管理员或站长对访客留言的回复信息,一条主留言可以有零条或多条回复。
| 字段名 | 数据类型 | 说明 | 示例值 |
|---|---|---|---|
id |
mediumint(8) unsigned | 主键,自增ID,每条回复的唯一标识。 | 10 |
typeid |
mediumint(8) unsigned | 关联的留言ID。这是最重要的字段,它将这条回复与 #@_guestbook 表中的某条主留言关联起来。 |
1 (表示这是对ID为1的留言的回复) |
uid |
mediumint(8) unsigned | 回复者ID,通常为管理员或站点的会员ID。 | 1 (管理员ID) |
uname |
varchar(20) | 回复者用户名。 | '管理员' |
dtime |
int(10) unsigned | 回复时间,Unix时间戳格式。 | 1678887000 |
msg |
mediumtext | ,管理员输入的回复正文。 | '您好,您的留言我们已经收到,感谢您的反馈!' |
表之间的关系
这两个表通过一个关键字段建立了一对多的关系:
#@_guestbookbook.typeid↔#@_guestbook.id
关系解释:
一条记录在 #@_guestbook 表中的留言(id=1),可以在 #@_guestbookbook 表中有多条对应的回复记录(typeid=1 的记录),这实现了一个留言可以有多个回复的功能。
数据库操作示例 (SQL)
查询所有已审核的留言及其回复
这是一个非常常见的查询,需要连接两个表,为了方便阅读,这里使用表别名。

(图片来源网络,侵删)
SELECT
g.id AS '留言ID',
g.uname AS '留言者',
g.msg AS '留言内容',
g.dtime AS '留言时间',
r.uname AS '回复者',
r.msg AS '回复内容',
r.dtime AS '回复时间'
FROM
`#@_guestbook` AS g
LEFT JOIN
`#@_guestbookbook` AS r ON g.id = r.typeid
WHERE
g.ischeck = 1 -- 只查询已审核的留言
ORDER BY
g.dtime DESC; -- 按留言时间倒序排列
查询某条特定留言的所有信息
如果你想查看ID为 5 的那条留言及其所有回复:
-- 先查询主留言信息 SELECT * FROM `#@_guestbook` WHERE id = 5; -- 再查询该留言的所有回复 SELECT * FROM `#@_guestbookbook` WHERE typeid = 5;
删除一条留言及其所有回复
为了保持数据完整性,删除主留言时,最好同时删除其所有相关的回复,可以使用事务来确保操作的原子性。
START TRANSACTION; -- 1. 删除所有关联的回复 DELETE FROM `#@_guestbookbook` WHERE typeid = 5; -- 2. 删除主留言 DELETE FROM `#@_guestbook` WHERE id = 5; COMMIT;
注意: 如果你的数据库不支持事务或者你不熟悉,可以先执行第二条删除回复的SQL,再执行第一条删除主留言的SQL。
统计待审核的留言数量
SELECT COUNT(*) AS '待审核留言数' FROM `#@_guestbook` WHERE ischeck = 0;
后台管理路径
在 DedeCMS 后台,你可以通过以下路径来管理留言:
核心 -> 评论 -> 留言管理
在这个页面,你可以执行以下操作:
- 查看、审核、删除留言
- 直接回复留言
- 批量操作(如批量审核、批量删除)
- 核心表:
#@_guestbook(主留言) 和#@_guestbookbook(回复)。 - 关联键:
guestbookbook.typeid=guestbook.id。 - 状态字段:
guestbook.ischeck用于控制留言是否在前台显示。 - 数据安全: 在进行数据库操作(尤其是删除)时,请务必备份数据库,并理解表之间的关系,避免误删。
希望这份详细的解析能帮助你完全理解 DedeCMS 留言板的数据库结构!
