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.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容