当前位置:首页 > CMS教程 > Thinkphp > 列表

Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】

发布:smiling 来源: PHP粉丝网  添加日期:2021-12-31 10:19:03 浏览: 评论:0 

这篇文章主要介绍了Thinkphp5.0框架的Db操作,结合实例形式分析了thinkPHP5使用Db库实现数据库的连接、增删改查及链式操作等相关使用技巧,需要的朋友可以参考下。

本文实例讲述了Thinkphp5.0框架的Db操作,分享给大家供大家参考,具体如下:

连接操作:

  1. <?php 
  2. namespace app\index\controller; 
  3. use think\Controller; 
  4. use think\Db; 
  5. class Index extends Controller 
  6.   public function study_db(){ 
  7.     //方式一:默认读取配置文件的配置 
  8.     $res = Db::connect(); 
  9.     //方式二:手动配置,使用一个数组 
  10.     $res = Db::connect([ 
  11.       'type'      => 'mysql'
  12.       'hostname'    => '127.0.0.1'
  13.       'database'    => 'bodywork3'
  14.       'username'    => 'root'
  15.       'password'    => '666'
  16.       'hostport'    => '3306'
  17.       'charset'     => 'utf8' 
  18.     ]); 
  19.     //方式三:手动配置,使用一个字符串 
  20.     $res = Db::connect("mysql://root:password@127.0.0.1:3306/database_name#utf8"); 
  21.     //方式四:手动配置,使用一个字符串 
  22.     //这种方式,需要在config配置文件中有tp_db_config数组配置 
  23.    $res = Db::connect("tp_db_config"); 
  24.   } 

查询sql:

  1. $data = Db::query("select * from user"); 
  2. dump($data); 
  3.  $data = Db::table('user')->select(); 
  4.  $data = Db::table('user')->find(); 
  5. //获取一条记录的某个字段值 
  6. $name = Db::table('user')->where(['id']=>5)->value('name'); 
  7. //获取一列值 
  8. $all_name = Db::table('user')->column('name'); 
  9. //获取一列值,第二个参数作为索引 
  10. $all_name = Db::table('user')->column('name','id'); 
  11. //注意: 
  12. //select和column获取不到数据时返回空数组。  
  13. //find和value获取不到数据时返回null。 
  14. $data = db('user')->select();//每次会实例化类 
  15. $data = db('user',[],false)->select();//每次不会实例化类 
  16.  
  17. //表名字,使用table     
  18. $data = Db::table('prefix_user')->select(); 
  19. //表名字,使用name 
  20. $data = Db::name('user')->select();   
  21. //使用table()时需要带上表前缀, 
  22. //使用name()时不需要表前缀, 

添加sql:

  1. //执行sql语句添加数据 
  2. Db::execute("insert into user values (1,'name',10)"); 
  3. //,返回影响的行数 
  4. $res = Db::name('user')->insert([ 
  5.   'name' => 'hello'
  6.   'age' => 10 
  7. ]); 
  8. //insertGetId()方法可以在添加数据后返回数据的id 
  9. $id = Db::name('user')->insertGetId([ 
  10.   'name' => 'hello'
  11.   'age' => 10 
  12. ]); 
  13. //添加多个数据,返回影响的行数 
  14. $res= Db::name('user')->insertAll([ 
  15.   ['name' => 'hello','age' => 10], 
  16.   ['name' => 'world','age' => 12], 
  17. ]); 

更新sql:

  1. //更新多个字段 
  2. $res = Db::name('user')-where(['id'=>1])->update([ 
  3.   'username' => 'zhang san'
  4.   'age' => '6' 
  5. ]); 
  6. //更新一个字段 
  7. $res = Db::name('user')-where(['id'=>1])->setField('username','zhang san'); 
  8. //自增、自减 
  9. $res = Db::name('user')-where(['id'=>1])->setInc('score'); 
  10. $res = Db::name('user')-where(['id'=>1])->setDec('score'); 
  11. $res = Db::name('user')-where(['id'=>1])->setInc('score',2); 

删除sql:

  1. //删除一条记录 
  2. $res = Db::name('user')->where(['id'=>1])->delete(); 
  3. //如果where条件是主键,可以这样写 
  4. $res = Db::name('user')->delete(1); 

查询构造器:

  1. //打印sql,where值为数组 
  2. $sql = Db::name('user')->where(['id'=>1])->buildSql(); 
  3. dump($sql); 
  4. //结果:SELECT * FROM `user` WHERE `id` = 1 
  5. //打印sql,where值为两个参数 
  6. $sql2 = Db::name('user')->where('id',1)->buildSql(); 
  7. dump($sql2); 
  8. //结果:SELECT * FROM `user` WHERE `id` = 1 
  9. //打印sql,where值为三个参数 
  10. $sql3 = Db::name('user')->where('id','=',1)->buildSql(); 
  11. dump($sql3); 
  12. //结果:SELECT * FROM `user` WHERE `id` = 1 
  13. //打印sql,where多条件 
  14. $sql4 = Db::name('user')->where([ 
  15.   'id' => ['in',[1,2,3,4,5]], 
  16.   'age' => ['gt',10] 
  17. ])->buildSql(); 
  18. dump($sql4); 
  19. //结果:SELECT * FROM `user` WHERE `id` IN (1,2,3,4,5) AND `age` > 10 
  20. //使用EXP表达式 
  21. $sql5 = Db::name('user')->where('id','EXP','not in (2,5)')->buildSql(); 
  22. dump($sql5); 
  23. //结果:SELECT * FROM `bw_user` WHERE ( `id` not in (2,5) ) 
  24. //可以使用连续的where条件 
  25. $sql6 = Db::name('user'
  26.   ->where('id','EXP','not in (2,5)'
  27.   ->where('age','>',10) 
  28.   ->buildSql(); 
  29. dump($sql6); 
  30. //结果:SELECT * FROM `bw_user` WHERE ( `id` not in (2,5) ) AND `age` > 10 
  31. //如果多个where条件是or关系,使用whereOr 
  32. $sql7 = Db::name('user'
  33.   ->where('id','EXP','not in (2,5)'
  34.   ->whereOr('age','>',10) 
  35.   ->buildSql(); 
  36. dump($sql7); 
  37. //结果:SELECT * FROM `bw_user` WHERE ( `id` not in (2,5) ) OR `age` > 10 

链式操作:

  1.     //链式操作,常用方法 
  2.     $data = Db::name('user'
  3.       ->where(['id','>',10]) 
  4.       ->field('id,name,age'
  5.       ->order('addtime desc'
  6.       ->limit('10,5'
  7. //      ->page('3,5') //limit((page-1)*5,5) 
  8. //      ->group('course') 
  9.       ->select(); 
  10.     dump($data);

Tags: Thinkphp5 0增删改查 Db

分享到: