try-catch和mysql事务在项目中的应用(tp5)

本文介绍在ThinkPHP5中如何利用事务处理确保数据一致性,尤其是在主表及其子表数据同步添加时,通过事务避免数据结构不完整的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

优点:在项目中对多表关联的数据一次性添加的情景中非常实用

实例:如A表为主表,B、C两表为A表的子表。在实际开发中,业务逻辑需要再添加A表的同时添加B、C两表的关联数据。
主要问题:如果A表(即主表)添加成功,而B、C两表添加数据失败,会造成整体数据结构不完整有错的情况

代码(tp5):

	$result = true; // 定义事务初始态
	Db::startTrans(); // 开始事务
	try { 
		if () {
			// 以下为逻辑代码
			
		}  else {
			// 主动抛出异常
			throw new Exception('数据添加失败!');
		}
		
		// 其他异常也可以想上篇代码抛出
		
		// 如所有逻辑在执行中都没有异常则提交事务
		Db::commit();
	} catch (\Exception $e) {
		$result = false; // 事务状态更改为回滚
		Db::rollback(); // 事务回滚
	}
	
	// 判断事务结果并返回前端
	if ($result) {
		$this->success('添加成功!');
	} else {
		// 事务失败的情况下,把接受到的异常捕捉后返回前端
		$this->error($e->getMessage());
	}

总结:项目中的事务很常用,使用事务可以保证数据的完整性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值