博客列表 >Thinkphp5.1.14中的数据库增删改查操作实例--20180524-16:45发布(23日作业)

Thinkphp5.1.14中的数据库增删改查操作实例--20180524-16:45发布(23日作业)

lilove的博客
lilove的博客原创
2018年05月24日 16:45:331605浏览

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. '条记录' : '没有删除记录';
	}
}

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议