本文实例讲述了Thinkphp5.0框架的Db操作。分享给大家供大家参考,具体如下:
连接操作:
<?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:
$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();//每次不会实例化类
//表名字,使用table $data = Db::table(\'prefix_user\')->select(); //表名字,使用name $data = Db::name(\'user\')->select(); //使用table()时需要带上表前缀, //使用name()时不需要表前缀,
添加sql:
//执行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:
//更新多个字段 $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:
//删除一条记录 $res = Db::name(\'user\')->where([\'id\'=>1])->delete(); //如果where条件是主键,可以这样写 $res = Db::name(\'user\')->delete(1);
查询构造器:
//打印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
链式操作:
//链式操作,常用方法 $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相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
© 版权声明
THE END
暂无评论内容