批改状态:合格
老师批语:
笔记:删除和更新需基于条件,不然很危险,insertGetId() == insert() + getLastInsID[],
实例:对数据库php里staff表的CURD操作,
配置数据库,在 controller控制器层创建Query控制器(Query.php),并引入Db,创建Query类
<?php
namespace app\index\controller;
use think\Db;
class Query
{
//读操作返回的都是二维数组,没有满足条件的记录,返回的是一个空数组、
//写操作返回的是受影响的记录数,如果没有返回0
public function find()
{
//查询单条记录数
$res = Db::table('staff')
// ->field('name,sex,salary')
->field(['name'=>'姓名','sex','salary'])
->where('staff_id','=',10) //where(字段、表达式、条件)
->find();
dump($res);
}
public function select()
{
//查询多条记录
$res = Db::table('staff')
->field(['name'=>'姓名','sex,salary'])
// ->where('salary > 3000')
->where('salary', '>',3000)//表达式
->order('salary', 'DESC')
->select();
dump($res);
}
public function insert()
{
//新增单条记录:insert()
$data=[
'name'=>'胡三刀',
'sex'=>0,
'age'=>32,
'salary'=>6200
];
// $num = Db::table('staff')->insert($data);
// $id = Db::getLastInsID();
// return $num? '添加成功,id='.$id:'没有记录被添加';
//data($data):将要处理的数据打包到$option[]
//insertGetId() == insert() + getLastInsID[]
// $id = Db::table('staff')->insertGetId($data);
// return $id? '添加成功,id='.$id : '没有记录被添加';
// $num = Db::table('staff')->data($data)->insert();
// $id = Db::getLastInsID();
// return $num? '添加成功,id='.$id:'没有记录被添加';
//
// 新增多条记录insertAll()
$data = [
['name'=>'刘备','sex'=>0,'age'=>45,'salary'=>9000],
['name'=>'关羽','sex'=>0,'age'=>42,'salary'=>8000],
['name'=>'张飞','sex'=>0,'age'=>38,'salary'=>8000],
];
$num = Db::table('staff')->data($data)->insertAll();
return $num? '添加成功,新增了'.$num.'条记录':'没有记录被添加';
}
public function update()
{
//更新操作必须是基于前置查询,不允许无条件更新 ,也是一个终极方法
//将工资小于等于4000的员工加薪1000
// $num = Db::table('staff')
// ->data(['salary'=>Db::raw('salary+1000')])
// ->where('salary','<=',4000)
// ->update();
$num = Db::table('staff')
->update(['sex'=>1,'staff_id'=>17]);
return $num? '更新成功'.$num.'条记录':'没有记录被更新';
}
public function delete()
{
//删除也必须基于前置查询,不允许无条件删除
//删除用的是delete()
// $num = Db::table('staff')->delete(26);
// $num = Db::table('staff')->delete([18,19,25]);
$num = Db::table('staff')->where('staff_id',19)->delete();
// $num = Db::table('staff')->where(true)->delete();//可以将当前表清空
return $num ? '删除成功'.$num.'条记录':'没有记录被删除';
//删除数据是一个危险的操作,建议使用软删除来实现,用更新来模拟删除
}
}
//提示:在实际的开发过程中,尽可能不要在控制器中操作数据库,而是采用模型来实现
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号