Blogger Information
Blog 100
fans 8
comment 2
visits 150144
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Thinkphp5.1.14中的数据库增删改查操作实例--20180524-16:45发布(23日作业)
lilove的博客
Original
1606 people have browsed it

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

运行实例 »

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


Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post