首先,查看一下discuz开发说明文档,找到《Discuz! X3 数据字典》
地址:http://faq.comsenz.com/library/database/x3/x3_index.htm
我们需要操作的表分别是 版块表(pre_forum_forum )和主题表(pre_forum_thread ),若前台需要读取主题分类则还需要操作 主题分类表(pre_forum_threadclass)。

附加表字段信息:
72961458112006.png
3db21458112019.png
274c1458112020.png

下一步我们开始写json接口。这里需要注明一点,接口文件必须放在discuz程序的根目录(有些方法不能调用,容易出现错误)。
我们创建一个 json.php 的文件,内容如下:
接口代码

这三个接口分别是 获取 某一个板块下最新发布的前10条记录、获取所有显示的板块分类、获取某一时间段内的某一板块下的主题帖子。

附加discuz的数据库操作封装方法:


DB::table($tablename)获取正确带前缀的表名,转换数据库句柄,
DB::delete($tablename, 条件,条数限制)删除表中的数据
DB::insert($tablename, 数据(数组),是否返回插入ID,是否是替换式,是否silent)插入数据操作
DB::update($tablename, 数据(数组)条件)更新操作
DB::fetch(查询后的资源)从结果集中取关联数组,注意如果结果中的两个或以上的列具有相同字段名,最后一列将优先。
DB::fetch_first($sql)取查询的第一条数据fetch
DB::fetch_all($sql)查询并fetch
DB::result_first($sql)查询结果集的第一个字段值
DB::query($sql)普通查询
DB::num_rows(查询后的资源)获得记录集总条数
DB::_execute(命令,参数)执行mysql类的命令
DB::limit(n,n)返回限制字串
DB::field(字段名, $pid) 返回条件,如果为数组则返回 in 条件
DB::order(别名, 方法)排序

注意事项:所有数据在插入数据库之前,均需要进行addslashes()处理,以免特殊 字符未经转义在插入数据库的时候出现错误。Discuz!中所有通过 GET, POST, FILE,取得的变量默认情况下已经使用了addslashes()进行了转义,不必重复进行。如果数据处理必要(例如用于直接显示),可以使用 stripslashes() 恢复,但数据在插入数据库之前必须再次进行转义。缓存文件中,一般对缓存数据的值采用 addcslashes($string, ''\')进行转义。

最后修改:2020 年 11 月 22 日 09 : 13 PM
如果觉得我的文章对你有用,请随意赞赏