批改状态:未批改
老师批语:
作业内容:
实例中主要包括了采用原生查询方式实现对数据库的增、删、改、查操作,其实包含了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.'条记录!' : '没有记录被删除!';
/**
* 删除数据是一个极其危险的操作,建议使用框架提供的软删除来实现。
* 即用更新来模拟删除
*/
}
}
/**
* 提示:
* 在实际的开发过程中,尽可能不要在控制器中直接操作数据库,而是采用模型来操作数据库。
*/点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号