Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
吾爱主题
阅读:162
2021-08-30 17:02:00
评论:0
本文实例讲述了Thinkphp5.0框架的Db操作。分享给大家供大家参考,具体如下:
连接操作:
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?php namespace app\index\controller; use think\Controller; use think\Db; class Index extends Controller { public function study_db(){ //方式一:默认读取配置文件的配置 $res = Db::connect(); //方式二:手动配置,使用一个数组 $res = Db::connect([ 'type' => 'mysql' , 'hostname' => '127.0.0.1' , 'database' => 'bodywork3' , 'username' => 'root' , 'password' => '666' , 'hostport' => '3306' , 'charset' => 'utf8' ]); //方式三:手动配置,使用一个字符串 $res = Db::connect( "mysql://root:password@127.0.0.1:3306/database_name#utf8" ); //方式四:手动配置,使用一个字符串 //这种方式,需要在config配置文件中有tp_db_config数组配置 $res = Db::connect( "tp_db_config" ); } } |
查询sql:
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $data = Db::query( "select * from user" ); dump( $data ); $data = Db::table( 'user' )->select(); $data = Db::table( 'user' )->find(); //获取一条记录的某个字段值 $name = Db::table( 'user' )->where([ 'id' ]=>5)->value( 'name' ); //获取一列值 $all_name = Db::table( 'user' )->column( 'name' ); //获取一列值,第二个参数作为索引 $all_name = Db::table( 'user' )->column( 'name' , 'id' ); //注意: //select和column获取不到数据时返回空数组。 //find和value获取不到数据时返回null。 $data = db( 'user' )->select(); //每次会实例化类 $data = db( 'user' ,[],false)->select(); //每次不会实例化类 |
1 2 3 4 5 6 | //表名字,使用table $data = Db::table( 'prefix_user' )->select(); //表名字,使用name $data = Db::name( 'user' )->select(); //使用table()时需要带上表前缀, //使用name()时不需要表前缀, |
添加sql:
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | //执行sql语句添加数据 Db::execute( "insert into user values (1,'name',10)" ); //,返回影响的行数 $res = Db::name( 'user' )->insert([ 'name' => 'hello' , 'age' => 10 ]); //insertGetId()方法可以在添加数据后返回数据的id $id = Db::name( 'user' )->insertGetId([ 'name' => 'hello' , 'age' => 10 ]); //添加多个数据,返回影响的行数 $res = Db::name( 'user' )->insertAll([ [ 'name' => 'hello' , 'age' => 10], [ 'name' => 'world' , 'age' => 12], ]); |
更新sql:
?1 2 3 4 5 6 7 8 9 10 11 | //更新多个字段 $res = Db::name( 'user' )-where([ 'id' =>1])->update([ 'username' => 'zhang san' , 'age' => '6' ]); //更新一个字段 $res = Db::name( 'user' )-where([ 'id' =>1])->setField( 'username' , 'zhang san' ); //自增、自减 $res = Db::name( 'user' )-where([ 'id' =>1])->setInc( 'score' ); $res = Db::name( 'user' )-where([ 'id' =>1])->setDec( 'score' ); $res = Db::name( 'user' )-where([ 'id' =>1])->setInc( 'score' ,2); |
删除sql:
?1 2 3 4 | //删除一条记录 $res = Db::name( 'user' )->where([ 'id' =>1])-> delete (); //如果where条件是主键,可以这样写 $res = Db::name( 'user' )-> delete (1); |
查询构造器:
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | //打印sql,where值为数组 $sql = Db::name( 'user' )->where([ 'id' =>1])->buildSql(); dump( $sql ); //结果:SELECT * FROM `user` WHERE `id` = 1 //打印sql,where值为两个参数 $sql2 = Db::name( 'user' )->where( 'id' ,1)->buildSql(); dump( $sql2 ); //结果:SELECT * FROM `user` WHERE `id` = 1 //打印sql,where值为三个参数 $sql3 = Db::name( 'user' )->where( 'id' , '=' ,1)->buildSql(); dump( $sql3 ); //结果:SELECT * FROM `user` WHERE `id` = 1 //打印sql,where多条件 $sql4 = Db::name( 'user' )->where([ 'id' => [ 'in' ,[1,2,3,4,5]], 'age' => [ 'gt' ,10] ])->buildSql(); dump( $sql4 ); //结果:SELECT * FROM `user` WHERE `id` IN (1,2,3,4,5) AND `age` > 10 //使用EXP表达式 $sql5 = Db::name( 'user' )->where( 'id' , 'EXP' , 'not in (2,5)' )->buildSql(); dump( $sql5 ); //结果:SELECT * FROM `bw_user` WHERE ( `id` not in (2,5) ) //可以使用连续的where条件 $sql6 = Db::name( 'user' ) ->where( 'id' , 'EXP' , 'not in (2,5)' ) ->where( 'age' , '>' ,10) ->buildSql(); dump( $sql6 ); //结果:SELECT * FROM `bw_user` WHERE ( `id` not in (2,5) ) AND `age` > 10 //如果多个where条件是or关系,使用whereOr $sql7 = Db::name( 'user' ) ->where( 'id' , 'EXP' , 'not in (2,5)' ) ->whereOr( 'age' , '>' ,10) ->buildSql(); dump( $sql7 ); //结果:SELECT * FROM `bw_user` WHERE ( `id` not in (2,5) ) OR `age` > 10 |
链式操作:
?1 2 3 4 5 6 7 8 9 10 | //链式操作,常用方法 $data = Db::name( 'user' ) ->where([ 'id' , '>' ,10]) ->field( 'id,name,age' ) ->order( 'addtime desc' ) ->limit( '10,5' ) // ->page('3,5') //limit((page-1)*5,5) // ->group('course') ->select(); dump( $data ); |
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
原文链接:https://www.cnblogs.com/gyfluck/p/9415018.html
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。