多条SQL语句当成一个整体来进行执行,如果其中由一条SQL语句没有执行成功,
那么所有的SQL语句都要执行失败,将状态回滚到最初状态。
MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!其他的类型是不支持的!
PDO::beginTransaction 启动一个事务
PDO::commit 提交一个事务
PDO::rollBack — 回滚一个事务
<?php
$dsn = ‘mysql:host = localhost;dbname=user;charset=utf8‘;
try{
$pdo = new PDO($dsn,‘root‘,‘123456‘);
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e)
{
die(‘数据库连接失败‘.$e->getMessage());
}
try{
$pdo->beginTransaction();
$sql = ‘update user set money=money-500 where id=1‘;
$ret = $pdo->exec($sql);
if($ret >0){
echo "建驴转款成功 <br />";
}else{
throw new PDOException(‘建驴转款失败<br />‘);
}
$sql = ‘update user set money=money+500 where id=2‘;
$ret = $pdo->exec($sql);
if($ret >0){
echo "建猪转入成功<br />";
}else{
throw new PDOException(‘建猪转入失败<br />‘);
}
$pdo->commit();
echo "交易成功!<br />";
}catch(PDOException $e){
$pdo->rollback();
echo $e->getMessage();
}
原文:https://www.cnblogs.com/rjbc/p/11354396.html