03

Discuz数据库操作类

DZ数据库类详解

函数 功能
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(别名, 方法) 排序

注意:由于 X1.5 里增加了SQL的安全性检测。因此,如果你的SQL语句里包含以下开头的函数 load_file,hex,substring,if,ord,char。 或者包含以下操作 intooutfile,intodumpfile,unionselect,(select’)都将被拒绝执行。

替换参数 功能
%t 表名,
%s 字串,如果是数组就序列化
%f 按 %F 的样式格式化字串
%d 整数
%i 不做处理
%n 若为空即为0,若为数组,就用’,’ 分割,否则加引号

C对象,可以有效的利用缓存,并且数据获得都统一在 class/table 目录下,好处是所有的查询都集中和复用。方便维护和升级。默认的T方法有以下默认的获得数据方式。每个数据表还需要看具体的表数据定义函数。#开头的,是插件表定义,会去插件目录下的table目录下找,所以插件开发也可以用这种方法。

函数 功能
C::t($tablename’)->count() 获取表所有行数
C::t($tablename’)->update(键值,$data) 更新键值数据
C::t($tablename’)->delete(键值) 删除键值数据
C::t($tablename’)->truncate() 清空表
C::t($tablename’)->insert($data, $return_insert_id,$replace) 插入数据
C::t($tablename’)->fetch_all($ids) fetch 数据,可以是单一键值或者多个键值数组
C::t($tablename’)->fetch_all_field() fetch所有的字段名表
C::t($tablename’)->range($start, $limit, $sort) fetch值域范围
C::t($tablename’)->optimize() 优化表

DB::query

修改数据库方法实例:
此查询的结果是把tid为10000的主题的浏览数增加1
DB::query("update ".DB::table('forum_thread')." set views=views+1 where tid = 10000");

此查询的结果是删除tid为10000的主题
DB::query("delete from ".DB::table('forum_thread')." where tid = 10000");

此查询的结果是在标签主表里面增加一个标签“标签名称”
DB::query("insert into ".DB::table('common_tag')." (tagname,status) values ('标签名称','0')");

DB::query与DB::fetch配合

DB::query 执行SQL查询,包括两种,一种是执行update,delete这些修改数据库的操作,还有一种与DB::fetch配合做一个循环查询
DB::fetch 与DB::query和while配合使用,形成一个循环

Continue reading

29

Discuz! X3 数据字典 DZ数据表结构

pre_common_admincp_cmenu 后台菜单收藏表

字段名 数据类型 默认值 允许非空 自动递增 备注
id smallint(6) unsigned NO
title varchar(255) NO 菜单名称
url varchar(255) NO 菜单地址
sort tinyint(1) 0 NO 菜单类型,备用
displayorder tinyint(3) NO 显示顺序
clicks smallint(6) unsigned 1 NO 点击数,备用
uid mediumint(8) unsigned NO 添加用户
dateline int(10) unsigned NO 添加时间

pre_common_admincp_group 后台管理组

字段名 数据类型 默认值 允许非空 自动递增 备注
cpgroupid smallint(6) unsigned NO 后台组id
cpgroupname varchar(255) NO 后台组名称

pre_common_admincp_member 后台管理成员

字段名 数据类型 默认值 允许非空 自动递增 备注
uid int(10) unsigned NO 成员uid
cpgroupid int(10) unsigned NO 成员组id
customperm text NO 自定义管理权限

Continue reading