Thinkphp5.0数据库相关操作(Db类)

数据库配置

数据库配置文件(application/database.php)在这里配置好参数

 

  

 

数据库操作之原生查询(SQL查询)使用query和execute两个方法,分别用于查询和写入查询之前要先引入Db

use\think\Db;

 

 

 

插入数据$result=Db::execute('insert into test (name,status) values("张三",1)');

修改数据$result=Db::execute('update test set name="zhangsan",status=0 where id=1');

删除数据$result=Db::execute('delete from test where id=1');

查询数据$result=Db::query('select * from test');dump($result); 

query方法用于查询,默认情况是返回数组集(二维数组);execute方法的返回值是影响的行数。

数据库操作之查询构造器
5.0提供了数据库查询构造器,可以更方便执行数据库操作,查询构造器基于PDO实现,对不同的数据库驱动都是统一的语法。

 

 

 插入记录$result=Db::table('test')->insert(['name'=>'黄晓明','status'=>1]);

更新记录$result=Db::table('test')->where('id',3)->update(['name'=>'刘德华','status'=>0]);

查询数据$result=Db::table('test')->select();$result=Db::table('test')->where('id',3)->select();

$result=Db::table('test')->where('status',1)->find();

删除数据$result=Db::table('test')->where('id',3)->delete();
table方法可以改为name方法,写法一样,如果数据库表设置了前缀,用table方法一定要写完整表名,name方法可以写省略前缀。

查询的select()方法可以换成find()方法,两者区别是select()方法返回的是数据集,find()方法返回的是满足条件的第一条记录。 

 

系统还提供了助手函数db,可以简化查询代码

 

 

$db=db('test');

插入记录$db->insert(['name'=>'黎明','status'=>1]);

更新记录$db->where('id',4)->update(['name'=>'刘德华','status'=>2]);
db里面的表名如果有前缀,可以不要写,助手函数默认会每次重新连接数据库,尽量避免多次调用。

其他查询、删除也一样。

 

链式操作

 

  

 $list=Db::name('test')  ->where('status',1) ->field('id','name') ->order('id','desc') ->limit(2) ->select();

 dump($list);
除了select要写在最后面,其他操作的不分先后,field是要查询的字段,order是排序,limit是查询的记录行数。

 

查询表达式

 

  

模糊查询$result=Db::name('test')->where('name','like','%明%')->select();

区间查询$result=Db::name('test')->where('id','BETWEEN',[2,4])->select();
表达式大小写都可以。

 

添加数据

 

 

一次性插入多条数据

$data=[  ['name'=>'张三','status'=>1], ['name'=>'李四','status'=>2],  ];

$result=Db::name('test')->insertAll($data);dump($result);

添加多条数据直接向Db类的insertAll方法传入需要添加的数据即可。

 

更新数据

 

  

更新某个字段的值$result=Db::name('test')->where('id',4)>setField('name','thinkphp');

自增某个字段的值$result=Db::name('test')->where('id',4)->setInc('status');

自减某个字段的值$result=Db::name('test')->where('id',4)->setDec('status',2);
setField方法返回的是影响的条数,没有修改任何数据字段返回0;
setInc/setDec如不加第二个参数,默认值为1。

 

posted @   夜品茶香  阅读(2342)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示