关于pdo事务提交的问题

关于pdo事务提交的问题

$dsn="mysql:host=localhost;dbname=test";
$pdo = new PDO($dsn,'root','123456');

$pdo->exec('set names utf8');
$pdo->beginTransaction();//开启事务

$sql1 = "UPDATE users SET money=money-50 WHERE id=1";
$result1 = $pdo->exec($sql1);

$sql2 = "UPDATE users SET money=money+50 WHERE id=2";
$result2 = $pdo->exec($sql2);

if ($result1>0 && $result2>0){
    echo '提交';
    $pdo->commit();//食物提交
}else{
    echo '回滚';
    $pdo->rollBack();//食物回滚
}

$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,1);
var_dump($result1,$result2);

当我删除了id=2的数据。再去执行这个事务。发现,事务照常进行了。也就是id=1的时候还是减去了。

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

你好,小慕试了一下是没有问题的,如果不存在这条数据,事务执行就不会成功,可能是你的数据库引擎的问题,MyISAM数据库引擎不支持事务处,会直接执行语句,检查一下,将它改为InnoDB试一试。

如果解决了你的问题,请采纳,祝学习愉快~

  • 乐舞声 提问者 #1
    对,是数据库默认引擎的问题。
    2018-06-14 22:10:17
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师