博主信息
博文 55
粉丝 0
评论 1
访问量 52866
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
数据库查询构造器中10个最常用方法-2018年5月24日18点
旺小舞的博客
原创
1042人浏览过

笔记:删除和更新需基于条件,不然很危险,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.'条记录':'没有记录被删除';

		//删除数据是一个危险的操作,建议使用软删除来实现,用更新来模拟删除
	}
}
//提示:在实际的开发过程中,尽可能不要在控制器中操作数据库,而是采用模型来实现

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学