关于pdo事务提交的问题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | $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积分~
来为老师/同学的回答评分吧