This article mainly introduces the method of PHP using transactions to handle transfer problems. It analyzes the techniques of PHP transaction submission and rollback with examples. Friends in need can refer to it.
The examples of this article describe PHP Mysqli Use transactions to handle transfer problems. Share it with everyone for your reference
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 | <?php
header( "Content-type:text/html; charset=utf-8" );
$mysqli = new mysqli( "localhost" , "root" , "064319" , "php" );
$mysqli ->set_charset( "utf8" );
if ( $mysqli ->connect_errno) {
die ('数据库连接失败'. $mysqli ->connect_error);
}
$mysqli ->autocommit(false);
$flag = true;
$query = "update account set balance=balance-1000 where id=3" ;
$result = $mysqli ->query( $query );
$affected_count = $mysqli ->affected_rows;
if (!result || $affected_count == 0) {
$flag = false;
}
$query = "update account set balance=balance+1000 where id=2" ;
$result = $mysqli ->query( $query );
$affected_count = $mysqli ->affected_rows;
if (! $result || $affected_count == 0) {
$flag = false;
}
if ( $flag ) {
$mysqli ->commit();
echo '转账成功';
} else {
$mysqli ->rollback();
echo '转账失败';
}
$mysqli ->autocommit(true);
$mysqli ->close();
?>
|
Copy after login
Code 2:
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 | <?php
try {
$pdo = new PDO( "mysql:host=localhost;dbname=psp" , "root" , "" );
$pdo -> exec ( "set names utf8" );
$pdo ->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$pdo ->setAttribute(PDO::ATTR_AUTOCOMMIT,0);
} catch (PDOException $e ){
echo "数据库连接失败" ;
exit ;
}
try {
$age =10;
$pdo ->beginTransaction();
$affected_rows1 = $pdo -> exec ( "update kfry set k_age=k_age+{$age} where k_name='user1'" );
$affected_rows2 = $pdo -> exec ( "update kfry set k_age=k_age-{$age} where k_name='user2'" );
if (! $affected_rows1 )
throw new PDOException( "加入错误" );
if (! $affected_rows2 )
throw new PDOException( "减少错误" );
echo "操作成功" ;
$pdo ->commit();
} catch (PDOException $e ){
echo "操作失败:" . $e ->getMessage();
$pdo ->rollback();
}
$pdo ->setAttribute(PDO::ATTR_AUTOCOMMIT,1);
echo "\n操作结果为:\n" ;
$sql = "select * from kfry" ;
$result = $pdo ->query( $sql );
foreach ( $result as $v )
{
echo $v ['k_name']. " " . $v ['k_age']. "\n" ;
}
?>
|
Copy after login
Summary: The above is the entire content of this article, I hope it will be helpful to everyone's study.
Related recommendations:
The definition of the static keyword in PHP, late binding and the difference from the self keyword
php large-scale data submission method
php method for folder operation
The above is the detailed content of PHP handles transaction submission and rollback. For more information, please follow other related articles on the PHP Chinese website!