php教程使用PDO操作事务
php教程使用PDO操作事务事务:是一个整体,要么一起执行,要么一起回滚事务的特性:原子性,一致性,隔离性,永久性需要将多个SQL语句作为一个整体执行,就需要使用到事务代码语法start transaction 或 begin 开启事务
commit 提交事务
rollback 回滚事务例题创建测试数据create table bank(
cardid char(4) primary key comment '卡号',
balance decimal(10,2) not null comment '余额'
)engine=innodb charset=utf8 comment '银行卡号表'
insert into bank values ('1001',1000),('1002',1)PDO操作事务
<body>
<?php
if(!empty($_POST)){
$dsn='mysql:dbname=data;charset=utf8';
$pdo=new PDO($dsn,'root','root');
$out=$_POST['card_out']; //转出卡号
$in=$_POST['card_in']; //注入卡号
$money=$_POST['money']; //金额
$pdo->beginTransaction(); //开启事务
//转账
$flag1=$pdo->exec("update bank set balance=balance-$money where cardid='$out'");
$flag2=$pdo->exec("update bank set balance=balance+$money where cardid='$in'");
//查看转出的账号是否大于0,大于0返回true,否则返回false
$stmt=$pdo->query("select balance from bank where cardid='$out'");
$flag3=$stmt->fetchColumn()>=0?1:0;
if($flag1 && $flag2 && $flag3){
$pdo->commit (); //提交事务
echo '转账成功';
}
else{
$pdo->rollBack ();//回滚事务
echo '转账失败';
}
}
?>
<form action="" method="post">
转出卡号: <input type="text" name="card_out" id=""> <br>
转入卡号: <input type="text" name="card_in" id=""> <br>
金额:<input type="text" name="money" id=""> <br>
<input type="submit" value="提交">
</form>
</body>
$pdo->beginTransaction() 开启事务
$pdo->commit () 提交事务
$pdo->rollBack() 回滚事务
页:
[1]