批改状态:合格
老师批语:
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. '条记录' : '没有删除记录';
}
}点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号