Discuz中常用数据库操作

插入数据的insert方法:

DB::insert($table, $data, $return_insert_id = false, $replace = false, $silent = false) 

说明

  1. $table 是表名,不用写表前缀;
  2. $data 是插入的键值对,如[‘name’ => ‘nciaer’, ‘age’ => 30,]
  3. $return_insert_id 是返回插入的id
  4. replace 是否是替换插入模式,开启这个得有个主键在数据里吧
  5. $slient 不知道干啥的

例子

$data = [
    'name' => 'nciaer',
    'age' => 30

]
$newid = DB::insert('nciaer_demo', $data, TRUE);

删除数据的delete方法:

DB::delete($table, $condition, $limit = 0, $unbuffered = true)

说明

  1. $table 是表名,不用写前缀
  2. $condition 是条件,可以是数组如[‘id’ => 4],也可以直接是表达式如 ‘id < 3 and status = 0’
  3. $limit 是限制删除的条数,默认就是删除全部符合条件的记录
  4. $unbuffered 貌似是无缓存的执行查询,据说是快点占内存小?
  5. 返回删除的行数

例子

DB::delete('nciaer_demo', "name = 'nciaer'"); // 条件表达式
DB::delete('nciaer_demo', ['name' => 'nciaer']); // 数组条件

更新数据的update方法:

DB::update($table, $data, $condition = '', $unbuffered = false, $low_priority = false)

说明

  1. $table 是表名,不用加前缀
  2. $data 是更新的数据,数组类型,如[‘name’ => ‘mickey’, ‘age’ => 30]
  3. $condition 是条件,空的话会全部更新,可以传表达式及数组,跟delete方法类似
  4. $unbuffered 无缓存的执行查询
  5. $low_priority 降低优先级,默认写入优先于读取操作,设置这个参数为TRUE可以保证先读取再写入,用户浏览会快点?
  6. 返回影响的行数

例子

DB::update('nciaer_demo', ['name' => 'mickey'], ['id' => 5]); // 数组条件
DB::update('nciaer_demo', ['name' => 'mickey'], 'id = 5'); // 表达式条件

查询一条数据的fetch_first方法:

DB::fetch_first($sql, $arg = array(), $silent = false) 

说明

  1. sqlSQLSQLselectfrom.DB::table(nciaerdemo).whereid=1selectfrom s q l S Q L 语 句 嘛 , 有 两 种 方 式 , 一 种 就 是 纯 S Q L 语 句 , 比 如 ′ s e l e c t ∗ f r o m ′ . D B :: t a b l e ( ′ n c i a e r d e m o ′ ) . ′ w h e r e i d = 1 ′ , 另 一 种 方 式 是 通 过 占 位 符 的 方 式 , 如 ′ s e l e c t ∗ f r o m d代表数字,%s代表字符串,参数就从后面的$arg传入,注意,表名不用写前缀,DB::table方法可以获取完整表名
  2. $arg 占位符的参数数组
  3. 不知道干啥的

例子

// 返回一个数组['id' => 1, 'name' => 'nciaer']
$rs = DB::fetch_first('select * from '.DB::table('nciaer_demo').' where id = 1');
$rs = DB::fetch_first('select * from %t where id = %d', ['nciaer_demo', 1]);

查询多条数据的fetch_all方法

DB::fetch_all($sql, $arg = array(), $keyfield = '', $silent=false)

说明

  1. 返回的是2维数组
  2. 前两个参数跟fetch_first一样,不解释
  3. $keyfield 参数是设置返回结果集的数组的键,默认是从0开始的索引嘛,这个可以设置某个字段的值作为键
  4. $slient 不知道干啥的

例子

// 返回二维数组,如:
[
    ['id' => 1, 'name' => 'nciaer', 'status' => 1],
    ['id' => 2, 'name' => 'mickey', 'status' => 1]
]
$rs = DB::fetch_first('select * from %t where status = %d', ['nciaer_demo', 1]);

查询某个字段值的result_first方法:

DB::result_first($sql, $arg = array(), $silent = false) 

说明

  1. 参数跟之前都一样,没啥好说的,这个方法就是来获取某个字段的值,所以查询里最好只写一个字段,结果集也得是唯一的

例子

// $name 的值就是字段的值,如nciaer,select后面只有一个字段
$name = DB::result_first('select name from %t where id = %d', ['nciaer_demo', 1]);

总结:

这些方法定义在source/class/discuz/discuz_database.php文件中,还有很多其他的没说到,以后用到再记录吧。


硬汉工作室的Discuz应用商店,海量实用小插件:http://addon.discuz.com/?@56030.developer

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值