Thinkphp5.1.14中的数据库增删改查常用方法:
find():查询单条记录;
select():查询多条记录:
insert():插入单条记录;
insertAll():插入多条记录;
update():更新记录;
delete():删除记录;
table():指定表名;
where():指定条件;
field():指定字段名;
order():指定排序;
limit():指定查询记录结果条数;
data():打包要操作的记录;
getLastInsID():获取最后一个受影响记录主键;
insertGetId():插入并获取主键。
在实际开发过程中,尽量不要直接操作数据库,使用模型来操作。
删除是及其危险的操作,使用更新来模拟删除。
代码实例及解释:
<?php namespace app\index\controller; // 引入Db入口类,这里引入就不用在方法中每个分别引用了 use think\Db; // 创建数据库查询类(这里的查询表示数据库的所有操作,广义的查询) class Query { // 1.查询单条记录find() public function find() { // Db::table()指定表名,find()指定主键值 // $res = Db::table('staff')->find(10); // 这里还可以链式调用 $res = Db::table('staff') // field()指定要查询的字段 // ->field('name,age,salary') // 也可以这么写,放入一个数组 // ->field(['name', 'age', 'salary']) // 还可以这么写,将查询的字段赋值显示结果 ->field(['name'=>'姓名', 'age'=>'年龄', 'salary'=>'工资']) // where()指定条件 ->where('staff_id', '>', 5) ->find(); dump($res); } // 2.多条记录查询select() public function select() { $res = Db::table('staff') // field()指定要查询的字段 // ->field('name,age,salary') // 也可以这么写,放入一个数组 // ->field(['name', 'age', 'salary']) // 还可以这么写,将查询的字段赋值显示结果 ->field(['name'=>'姓名', 'age'=>'年龄', 'salary'=>'工资']) // where()指定条件 ->where('staff_id', '>', 5) // order()对查询结果排序,参数1:字段名,参数2:顺序(正序:ASC,降序:DESC) // ->order('salary DESC') // 还可以这么写 ->order('salary', 'DESC') // limit()查询纪录条数 ->limit(2) ->select(); dump($res); } // 3.插入记录(单条和多条) public function insert() { // (1)插入单条记录 // 将要插入的记录存入一个数组 // $data = [ // 'name'=>'小青', // 'sex'=>1, // 'age'=>'20', // 'salary'=>4500 // ]; // 直接执行insert()方法 // $num = Db::table('staff')->insert($data); // 提示结果信息 // $id = Db::getLastInsID(); // return $num ? '添加成功,ID是:'. $id : '添加失败'; // data($data)将要处理的数据打包到$option[]数组里 // insertGetId()将结果执行并返回受影响的id(简化了上面的操作),相当于insert()加上Db::getLastInsID() // 那么上面的语句可以改写为: // $id = DB::table('staff')->insertGetId($data);//不建议这么改写,最终方法不要加参数 // $num = Db::table('staff') // ->data($data) // ->insert(); // $id = Db::getLastInsID(); // return $num ? '添加成功,ID是:'. $id : '添加失败'; // (2)插入多条记录 // 将要插入的数据放入二维数组 $data = [ ['name'=>'大王', 'sex'=>0, 'age'=>15, 'salary'=>7000], ['name'=>'小王', 'sex'=>0, 'age'=>16, 'salary'=>4000], ['name'=>'非王', 'sex'=>0, 'age'=>17, 'salary'=>6000] ]; // 链式调用最后执行insertAll()插入多条数据 $num = Db::table('staff') ->data($data) ->insertAll(); return $num ? '添加成功,纪录条数:'. $num : '添加失败'; } // 4.更新记录 public function update() { // 不允许无条件更新,将工资小于4000的人加薪2000 $num = Db::table('staff') ->where('salary', '<', 4000) ->data(['salary' => Db::raw('salary+2000')]) ->update(); return $num ? '更新成功'. $num. '条记录' : '更新失败'; } // 5.删除记录 public function delete() { // 不允许无条件删除 $num = Db::table('staff') // 删除单条记录,默认参数为主键值 // ->delete([6]); // 删除多条记录,参数为主键值索引数组 // ->delete([23,24,25]); // 也可以加入where() ->where('salary', '=', 4500) ->delete(); // 清空表,直接给delete()传入参数true // ->delete(true); return $num ? '删除了'. $num. '条记录' : '没有删除记录'; } }
运行实例 »
点击 "运行实例" 按钮查看在线实例