header("Content-type: text/html; charset=utf-8");
$pdo = new PDO(‘mysql:host=localhost;dbname=ceshi‘, "root", "");
$pdo->exec("set names utf8");
//为下面的try()catch(){}抓到的异常,定义错误类型
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
//开始事务机制
$pdo->beginTransaction();
//异常捕获(异常)
try{
$sql1 = "update user_money set money=(money-300) where id=1";
$pdo->exec($sql1);
$sql2 = "update user_money set money=(money+300) where id=2";
$pdo->exec($sql2);
$sql3 = "update user_money set money=(money-200) where id=2";
$pdo->exec($sql3);
$sql4 = "update user_money set money=(money+200) where id=3";
$pdo->exec($sql4);
//没有异常则提交该事件
echo "转账成功";
$pdo->commit();//提交事件,只有提交了事件,才能真正在数据库进行修改
}catch(PDOException $pe){
$errorInfo = $pe->getMessage();//得到错误的具体信息
$errorCode = $pe->getCode();//得到错误的代号
$errorLine = $pe->getLine();//得到错误的行号
echo "<p>转账失败原因:</p>";
echo "<p>{$errorInfo}</p>";
echo "<p>{$errorCode}</p>";
echo "<p>{$errorLine}</p>";
//回滚事件,如果检测到有异常,前面的几步都要回滚到最初的状态
$pdo->rollBack();
}
原文地址:https://www.cnblogs.com/sunhao1987/p/9338584.html