PHP+Mysql基于事务处理实现转账功能的方法
内容摘要
本文实例讲述了PHP+Mysql基于事务处理实现转账功能的方法。分享给大家供大家参考。具体如下:
<?php
header("Content-Type:text/html;charset=utf-8");
$mysqli=ne
<?php
header("Content-Type:text/html;charset=utf-8");
$mysqli=ne
文章正文
本文实例讲述了PHP+Mysql基于事务处理实现转账功能的方法。分享给大家供大家参考。具体如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <?php header( "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语句如下:
1 2 3 4 5 6 7 8 | 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程序设计有所帮助。
代码注释