thinkphp5 Db 数据库
导入Db类
use thinkDb

class User{
$user=Db::table($database['prefix'] . $tablename);//含前缀
$user=Db::name($name);//不含前缀;
或使用助手函数
db('user');

1.基本使用
写入使用excute()
$user->execute('insert into think_user (id, name) values (?, ?)',[8,'thinkphp']);//参数绑定 防注入

读取使用query()
$user->query('select * from think_user'); //返回的是二维数组

2.使用构造器
查询
$user->find(); //查询一条记录
$user->select()//查询全部几句
$user->where('id',1)->select()//条件查询
$user->where('id',1)->value('name');//值查询
$use->where('statues','1')->column('name'{column('name','id')});//列查询 返回一列(数组){指定索引}
插入
$user->insert($data)//插入一条数据 对应字段数组数据 $data=['id'=>1,'name'=>'lisi']
$user->insertAll($data);
//插入多条数据
$data=[['id'=>1,'name'=>'lisi'],['id'=>'2','name=>'wangwu']];

更新
更新数据表中的数据
db('user')->where('id',1)->update(['name'=> 'thinkphp']); // 更新某个字段的值
db('user')->where('id',1)->setField('name','thinkphp'); // 自增score 字段
db('user')->where('id', 1)->setInc('score'); // 自减score 字段
db('user')->where('id',1)->setDec('score');
删除//根据主键删除
db('user')->delete(1); // 条件删除
db('user')->where('id',1)->delete();



TP5数据库操作方法
1.name()方法
作用 指定默认的数据表名(不含前缀)
示例 Db::name('weiba_post');
返回 Db对象

2.setTable()方法
作用 指定默认数据表名(含前缀)
示例 Db::setTable('op_weiba_post');
返回 Db对象

3.getTable()方法
作用 得到当前或者指定名称的数据表(有前缀)
示例 Db::getTable('weiba_post'); //返回op_weiba_post,带有表前缀,并且转换成了C风格
Db::getTable();  //返回由setTable()设置的表名称(官方所说的是返回 "当前" 表名称).
返回 表名(字符串)

4.parseSqlTable()方法
作用 将SQL语句中的__TABLE_NAME__字符串替换成带前缀的表名(小写)...此方法一般用不到,主要用于Db类自己调用
示例 Db::parseSqlTable(__WEIBA_POST__); //返回op_weiba_post,带有表前缀,并且转换成了小写
返回 表名(字符串)

5.query()方法
参数
1.$sql          命令字符串[必填],
2.$bind=[]      绑定参数,默认空数组[选填],
3.$master=false,服务器序号(主从服务器有效),如果数据库没有配置主从服务器.则db类忽略该参数.一般用不到.[选填]
4.$class = false返回值处理方式.默认直接返回
true PDO对象
类名 当前类处理 ''  不做任何处理.直接返回

作用 执行查询 返回数据集(查询)
示例 Db::query($sql);   //返回查询结果
返回 返回查询结果(数组或对象)


6.execute()方法
参数  $sql, $bind = [], $getLastInsID = false, $sequence = null
1.$sql          命令字符串[必填],
2.$bind=[]      绑定参数,默认空数组[选填],
3.$getLastInsID=false  是否返回上次插入的ID.如果true则返回上次上次插入ID.false返回影响行数.默认为false.[选填]
4.$sequence=null 如果没有为参数 sequence 指定序列名称 则返回一个表示最后插入数据库那一行的行ID的字符串。如果为参数 sequence 指定了序列名称 则返回一个表示从指定序列对象取回最后的值的字符串。如果当前 PDO 驱动不支持此功能 则触发一个 IM001 SQLSTATE 。



作用 执行语句(编辑)
示例 Db::execute($sql); //返回一个整型的数字
返回 返回编辑结果,

7.getLastInsID()方法
作用 获取最近插入的ID
示例 $id = Db::getLastInsID()
返回 ID

8.getLastSql()方法
作用 获取最近一次查询的sql语句
示例 $sql = Db::getLastSql()
返回 sql命令,字符串类型

9.transaction()方法       php好强大...
参数 1.$callback,回调函数[可选]
作用 执行数据库事务,回调函数执行成功则提交事务,否则回滚
示例 Db::transaction($this->update($data));
返回 回调函数的返回值

10.startTrans()方法
作用 开启事务
示例 Db::startTrans()
返回 失败返回假,成功无返回值,注意false跟null的区别(===)

11.commit()方法
作用 用于非自动提交状态下面的查询提交
示例 Db::commit()
返回 无返回值

12.rollback()方法
作用 事务回滚
示例 Db::rollback();
返回 无返回值

13.batchQuery()方法
参数 就一个.类型必须是数组.否则直接返回假
作用 批处理执行SQL语句,强制认为是编辑操作,内部启动了事务.也就是说要么都成功.要么都失败(失败会抛出一个异常)
示例 Db::batchQuery($arr);//参数是sql命令数组
返回 总是返回true

14.getConfig()方法
作用 返回数据库配置参数
示例 $config = Db::getConfig();
返回 配置信息

15.getPartitionTableName()方法
作用 得到分表的的数据表名(用到再说吧.说不定要改写.)
示例
返回 表名

16.value()方法
参数 1.字段.2默认值
作用 得到某个字段的值
示例 Db::table('op_user')->value('uid' , false);
作用 得到某个字段的值

17.column()方法
参数
1.字段名.多个用逗号隔开[必填]
2.索引字段[选填]
作用 得到某个列的数组
示例 不想写
作用 这就是value()方法组团来的...

18.count()方法
参数 他的参数默认是*,建议以后使用的时候用0
作用 COUNT查询,数量
示例 Db::table('op_user')->count(0);
返回 数量

19.sum()方法
参数 默认是*.建议改
作用 求和
示例 Db::table('op_user')->sum('uid');  //uid的总数,好神奇的需求...
返回 数量

20.min()方法
参数 默认是*.建议改
作用 求最小值
示例 Db::table('op_user')->min(`uid`);  //最小uid
返回 字段值

21.max()方法
参数 默认是*.建议改
作用 求最大值
示例 Db::table('op_user')->max(`uid`);  //最大uid
返回 字段值

22.avg()方法
参数 默认是*.建议改
作用 求平均值
示例 Db::table('op_user')->avg(`uid`);  //最大uid
返回 字段值

23.setField()方法
参数 可以是数组,也可以是字符串
作用 修改某一字段的值(内部调用的update)
示例
Db::table('op_user')->where(['uid'=>1])->setField('phone' , '110');
Db::table('op_user')->where(['uid'=>1])->setField(['phone' => '110']);
返回 影响行数

24.setInc()方法
参数
1.$field:同setField().归根结底还是调用的update
2.$step 增长值
3.$lazyTime 延迟时间,大于0时才延迟
作用 延迟更新.保存在缓存中.Db类自动调用.

25.setDec()方法
参数
1.$field:同setField().归根结底还是调用的update
2.$step 减少值
3.$lazyTime 延迟时间,大于0时才延迟
作用 同setInc()方法


26.join()方法
参数
1.表名,支持__WEIBA_POST__,
2.on条件.可以是字符串.也可以是数组.如果是数组连接用的and.
3.join类型.left,right,inner
注意.如果只传一个参数,必须为数组.格式就是上面的三个值,否则报错.
作用 关联查询
示例
Db::table('aa')->join('__BB__','aa.id=bb.id and aa.name=bb.name','left');   //aa left join bb on aa.id=bb.id and aa.name=bb.name
Db::table('aa')->join('bb',['aa.id=bb.id','aa.name=bb.name'],'left');       ////aa left join bb on aa.id=bb.id and aa.name=bb.name
Db::table('op_user as u')->field('u.uid')->join(['op_bz_binzhouq'=>'q'] , 'u.uid = q.uid' , 'left')->select();  //SELECT u.uid FROM op_user as u LEFT JOIN op_bz_binzhouq q ON u.uid = q.uid


27.union()方法
参数
1.$union,可以是数组,也可以是字符串
2.$all,有值UNION ALL ,否则为UNION
作用 合并结果集
示例 Db::union($union , true);

28.field()方法
参数
1.$field:true全部字段,字符串(自动去重)
2.真假,是否去重,如果$field是全部字符串(true)时,不支持去重.
3.$tableName:表名.会组成$tableName.$field的形式
后面还有俩参数...用不到了...

作用 指定field字段
示例 Db::field('id, name' , 0,'user')->field('pid , pname , psex' , 0 , 'ping') //user.id , user.name , ping.pid , ping.pname , ping.psex

29.view()方法
参数 :
1.$join 表名
2.$field 字段名
3.$on 关联条件,同join方法
4.$type 关联类型.left.right

作用 该方法设置的字段会在前面加上表
示例  Db::table('user')->field('uid' , 0 , 'user')->view('binzhour' , 'name' , 'user.uid=binzhour.uid' , 'left')->select();    
//select `user`.`uid` , `binzhour`.`name` from `user` left join `binzhour` on `user`.`uid` = `binzhour`.`uid`;

30.partition()方法
参数
1.data,         
2.field,
3.rule[可选]

作用 设置分表规则,内部调用的getPartitionTableName()方法
示例 见getPartitionTableName方法

31.where()方法
参数
1.field 查询字段
2.op[可选] 查询表达式
3.condition 查询条件

作用 指定AND查询条件.内部调用的 parseWhereExp()方法,
示例 详见 parseWhereExp() 方法

32.whereOr()方法
参数 同where()方法
作用 指定OR查询条件.与where唯一不同的是用or连接.内部调用的 parseWhereExp() 方法
示例 详见 parseWhereExp() 方法


33.whereXor()方法
参数 同where()方法
作用 异或,两边布尔值相同为假.不同为真.内部调用的 parseWhereExp() 方法
示例 详见 parseWhereExp() 方法


34.limit()方法
参数
1.起始位置
2.查询数量
作用 指定查询数量
示例 limit(0 , 20);

35.page()方法
参数
1.页数[必选]
2.每页数量,[可选 20].
作用 指定分页
示例 page(1,20);    //第一页.每页20条.

36.table()方法
参数
1.表名
作用 指定当前操作的数据表
示例 table('tableName')

37.using()方法(不知道用法...)
参数
1.字段名
作用 USING支持
示例 select a.*, b.* from a left join b using(colA); 等同于 select a.*, b.* from a left join b on a.colA = b.colA;

38.order()方法
参数
1.字段名
2.排序
作用 排序
示例 order('id','desc') 或者 order(['id'=>'desc','create_time'=>'desc'])

39.cache()方法
参数 :
1.缓存KEY.
2.缓存有效期.
作用 查询缓存
返回对象...
示例 cache('id' , 10)

40.group()方法
参数 1.字段名
作用 分组查询
示例 :

41.having()方法

42.distinct()方法

43.alias()方法.别名

44.force()方法
参数 索引名
作用 强制使用索引,不使用其他索引

45.comment()方法
参数 注释内容
作用 给sql命令写注释.
示例 Db::name('bz_live')->comment('好无聊的方法')->find(); 等同于 SELECT * FROM `op_bz_live` LIMIT 1  

46.fetchSql()方法
参数 写true
作用 返回sql语句
示例 $sql = Db::name('bz_live')->fetchSql(true)->select();   

47.fetchPdo()方法
参数 写true
作用 返回 PDOStatement 对象
示例 Db::name('bz_live')->fetchPdo(true)->select();

48.strict()方法
参数 true/false
作用 是否严格检查字段名
示例

49.failException()方法
参数 true/false
作用 设置查询数据不存在是否抛出异常