找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 16841|回复: 1

[内置扩展] DB数据库操作类说明

[复制链接]
发表于 2019-7-6 11:23:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
函数
功能
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,若为数组,就用',' 分割,否则加引号
[PHP] 纯文本查看 复制代码
数据表插入:
方法:
DB::insert()
参数:
$table:插入数据的表
$data:插入的数据,字段对应值
$return_insert_id:是否返回插入数据的ID
$replace:是否使用replace into(当原始表中存在不重复数据就插入,存在就更新)
$silent:操作失败是否不提示

实例
DB::insert('test_db',array(
'name' => 'ppc',
),true,true);

数据表删除:
方法:
DB::delete()
参数:
$table:删除数据的表
$condition:删除的条件
$limit:删除满足条件的条目数
$unbufered:是否使用无缓存查询

实例:
DB::delete('test_db','id>2',1,true);m

数据表更新:
方法:
DB::update()
参数:
$table:更新数据的表
$data:更新的数据,字段对应值
$condition:更新的条件
$unbufered:是否使用无缓存查询
$low_priority:是否采用无锁表更新

数据表查询(单条):
方法:
DB::fetch_first()
参数:
$sql:查询数据的SQL语句
$arg:绑定查询的参数
$silent:查询失败是否不提示
实例:
$id = $_GET['id'];
DB::fetch_first('select * from %t where id=%d',array(
'test_db',$id
));

DB::fetch_first('select * from %t where name=%s',array(
'test_db','ccc'
));



数据表查询(多条):
方法:
DB::fetch_all()
参数:
$sql:查询数据的SQL语句
$arg:绑定查询的参数
$keyfield:一维索引的字段名称
$silent:查询失败是否不提示
实例:
DB::fetch_all('select * from %t where id >= %d AND id<=%d',array(
'test_db',7,10
));

DB::fetch_all('select * from %t where id IN (%n)',array(
'test_db',array(1,2,3,4,5)
));

数据表查询(单字段) 常用于统计查询:
方法:
DB::result_first()
参数:
$sql:查询数据的SQL语句
$arg:绑定查询的参数
$silent:查询失败是否不提示
实例:
DB::result_first('select name from %t where id=%d',array(
'test_db',1
));

DB::result_first('select max(id) from %t',array(
'test_db'
));

数据库自定义query
方法:
DB::query()
参数:
$sql:自定义SQL语句
$arg:需要绑定的数据
$silent:执行SQL失败时,是否不提示
$unbufered:是否使用无缓存查询
实例:
$query = DB::query("select * from %t where id IN (%n)",array(
'test_db',array(1,2,3)
));
debug($query);

删除
DB::query("delete from %t where id = %id",array(
'test_db',11
));


资源集转换结果集
方法:
DB::fetch()
参数:
$resourceid:数据库查询的query资源
$type:数组类型
实例:
查询
$query = DB::query("select * from %t where id IN (%n)",array(
'test_db',array(1,2,3)
));
while($res = DB::fetch($query)){
   $result[] = $res;
}
debug($query);

单字段资源集转换结果集(一般用于查看获取统计值)
方法:
DB::result()
参数:
$resourceid:数据库查询的query资源
$row:指定行的第一个字段
实例:
$query =  DB::query("select count(*) from %t where id < %id order by id",array(
'test_db',10
));
$data = DB::result($query,1);

常用实例:
$query = DB::query("select count(*) from %t where id > %d",array(
'test_db',7
));
$data = DB::result($query,0);
echo $data;

资源集行数计算(不适合统计太多的资源,速度慢)
方法:
DB::num_rows()
参数:
$resourceid:数据库查询的query资源
实例:
$query = DB::query("select * from %t where id > %d",array(
'test_db',7
));
$data = DB::num_rows($query);
echo $data;

资源集资源释放
方法:
DB::free_result()
参数:
$query:执行SQL语句的query资源
$query = DB::query("select count(*) from %t where id > %d",array(
'test_db',7
));
$data = DB::result($query,0);
DB::free_result($query);
echo $data;

按字段排序
方法:
DB::order()
参数:
$field:需要排序的字段
$order:排序方式
实例:
$query = DB::query("select * from %t where id > %d order by".DB::order('id','desc'),array(
'test_db',7
));
$data = DB::result($query,0);
DB::free_result($query);
echo $data;

取值区间设定
方法:
DB::query()
参数:
$start:开始的索引值
$limit:条目数
$query = DB::query("select * from %t where id > %d order by".DB::order('id').DB::limit(0,3),array(
'test_db',7
));

字段拼接
方法:
DB::implode()
参数:
$array:需要拼接的字段数组
$glue:字段拼接的字符串
实例:
echo DB::implode(array('id' => 10,'name' => 'ddd'),'and');

应用:
DB::query("update %t set".DB::implode(array(
'name' => 'ddd',
发表于 2020-12-22 18:25:30 | 显示全部楼层
好棒棒!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|新秀网络验证系统API[软著登字第13061951号] ( 豫ICP备2021033257号-1 )

GMT+8, 2024-11-5 02:17 , Processed in 0.275013 second(s), 71 queries , Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表