本文实例讲述了PHP+Mysql基于事务处理实现转账功能的方法。分享给大家供大家参考。具体如下:
<?phpheader("Content-Type:text/html;charset=utf-8");$mysqli=new mysqli("localhost","root","","test");if(mysqli_connect_errno()){printf("连接失败:%s<br>",mysqli_connect_error());exit();}$success=TRUE;$price=8000;$result=$mysqli->query("select cash from account where name="userA"");while($row=$result->fetch_assoc()){$value=$row["cash"];echo $value;}$mysqli->autocommit(0);if($value>=$price){$result=$mysqli->query("UPDATE account set cash=cash-$price where name="userA"");}else {echo "余额不足";exit();}if(!$result or $mysqli->affected_rows!=1){$success=FALSE;}$result=$mysqli->query("UPDATE account set cash=cash+$price where name="userB"");if(!result or $mysqli->affected_rows!=1){$success=FALSE;}if($success){$mysqli->commit();echo "转账成功!";}else{$mysqli->rollback();echo "转账失败!";}$mysqli->autocommit(1);$query="select cash from account where name=?";$stmt=$mysqli->prepare($query);$stmt->bind_param("s",$name);$name="userA";$stmt->execute();$stmt->store_result();$stmt->bind_result($cash);while($stmt->fetch())echo "用户userA的值为:".$cash;$mysqli->close();?>数据库SQL语句如下:
create table account{ userID smallint unsigned not null auto_increment, name varchar(45) not null, cash decimal(9,2) not null, primary key(userID))type=InnoDB;insert into account(name,cash) values ("userA","2000");insert into account(name,cash) values ("userB","10000");希望本文所述对大家的php程序设计有所帮助。