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

来源:互联网 发布:阿里云架设dnf 编辑:程序博客网 时间:2024/04/27 19:07
<?phpheader('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();