关于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的时候还是减去了。
8
收起
正在回答
1回答
你好,小慕试了一下是没有问题的,如果不存在这条数据,事务执行就不会成功,可能是你的数据库引擎的问题,MyISAM数据库引擎不支持事务处,会直接执行语句,检查一下,将它改为InnoDB试一试。
如果解决了你的问题,请采纳,祝学习愉快~
PHP常用技术与ThinkPHP5框架开发
- 参与学习 人
- 提交作业 225 份
- 解答问题 3372 个
掌握用PHP开发互联网网站的必备功能,掌握当下主流的Linux系统开发,并熟练使用热门框架ThinkPhp开发电商团购项目,是通向PHP工程师必经之路。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星