利用事物处理来解决转账问题

<?php
header('content-type:text/html;charset=utf-8');
$mysqli=new mysqli('localhost','root','','test');
if($mysqli->errno)
{
	die('Connect Error'.$mysqli->error);
}
$mysqli->set_charset('utf8');
$mysqli->autocommit(FALSE);//1则开启自动提交 0 则关闭
//关闭自动提交功能  
//比如实现一个转账功能  king有1000 块,queen有500
//king向queen转账200  则需要同时实现  1000-200    500+200
//所以需要关闭自动提交功能 
$sql="UPDATE account SET money=money-200 WHERE username='king'";
$res=$mysqli->query($sql);
$res_affect=$mysqli->affected_rows;

$sql1="UPDATE account SET money=money+200 WHERE username='queen'";
$res1=$mysqli->query($sql1);
$res1_affect=$mysqli->affected_rows;

if($res && $res_affect>0 && $res1 &&$res1_affect>0)
{
	$mysqli->commit();  //提交事务
	echo "转账成功";
	$mysqli->autocommit(TRUE);//开启自动提交
}  
else
{
	$mysqli->rollback();//回滚事务
	echo '转账失败';
}
$mysqli->close();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值