Correction status:Uncorrected
Teacher's comments:
作业内容:
实例中主要包括了采用原生查询方式实现对数据库的增、删、改、查操作,其实包含了Table(),field(),order(),where(),limit(),insert(),insertAll(),update(),delete(),以及如何获取自增主键和数据打包方法data()等方法
实例代码分享如下:
<?php namespace app\index\controller; use think\Db; class Query { //读操作返回的都是二组数组,没有满足条件的记录返回空数组 //写操作返回的是受影响的记录数,如果没有满足条件的记录返回0 public function find() { //1.查询返回单条记录: //获取到满足条件的第一条记录 $res = Db::table('staff') // ->field('name,sex,salary') //只显示某几个字段 // 显示的字段用数组方式传入,数组中每一个元素对应一个字段。写成数组的好处是可以给字段起个别名 ->field(['name'=>'姓名','sex'=>'性别','salary'=>'工资']) // ->where('staff_id','=',10) //where(字段、表达式,条件) ->where('staff_id','>',10)//where(字段、表达式,条件) ->find(); //输入主键进行查询 dump($res); } public function select() { //2.查询满足条件的多条记录 $res = Db::table('staff') ->field(['name'=>'姓名','salary'=>'工资']) // ->where('salary > 3000') ->where('salary','>',3000) //排序 // ->order('salary DESC') //ASC:默认,升序; DESC:降序 ->order('salary', 'DESC') //ASC:默认,升序; DESC:降序 ->limit(5) //只显示满足条件的5条记录 ->select(); dump($res); } public function insert() { //3.新增单条记录:insert() $data = [ 'name' => '胡一刀', 'sex' => 0, 'age' => 55, 'salary' => 5888 ]; //data($data):将要处理的数据打包到一个数组中 $option[] //insertGetId() == insert() + getLastInsID() //获取自增主键 $num = Db::table('staff')->data($data)->insert(); $id = Db::getLastInsID(); //获取新增数据的id return $num ? '新增成功,id='.$id : '没有添加成功'; } public function insertAll() { //4.添加多条记录 $data = [ ['name'=>'张飞','sex'=>0,'age'=>40,'salary'=>4000], ['name'=>'关羽','sex'=>0,'age'=>45,'salary'=>4500], ['name'=>'刘备','sex'=>0,'age'=>49,'salary'=>4900] ]; $num = Db::table('staff')->data($data)->insertAll(); return $num ? '成功添加'.$num.'条记录!' : '没有添加成功'; } public function update() { //5.更新操作:必须是基于前置查询,不允许无条件更新 //更新使用update()方法,也是一个终级方法 // //将工资小于等于4000元的员工加薪1000元 // $num = Db::table('staff') // ->where('salary','<=',4000) // //使用raw()获取原始数据值,直接写'salary+1000',因为salary为字符串,最终结果将为零。 // ->data(['salary'=> Db::raw('salary+1000')]) // ->update(); $num = Db::table('staff') ->update(['sex'=>1,'staff_id'=>16]); return $num ? '成功更新'.$num.'条记录!' : '没有记录被更新!'; } public function delete() { //6.删除也必须基于前置查询,不允许无条件删除 //删除使用delete()方法 //删除单条件记录 // $num = Db::table('staff')->delete(16); //基于主键值进行删除 staff_id=16 //删除多条件记录 // $num = Db::table('staff')->delete([24,25]); //将主键值 24、25的记录删除 // $num = Db::table('staff') ->where('salary','>',100000) //删除条件 ->delete(); //清空表 // $num = Db::table('staff')->delete(true); return $num ? '成功删除'.$num.'条记录!' : '没有记录被删除!'; /** * 删除数据是一个极其危险的操作,建议使用框架提供的软删除来实现。 * 即用更新来模拟删除 */ } } /** * 提示: * 在实际的开发过程中,尽可能不要在控制器中直接操作数据库,而是采用模型来操作数据库。 */
点击 "运行实例" 按钮查看在线实例