标签:
事务就是指对数据库的多次修改,要么全部成功,要么全部失败,不能出现部分修改成功,部分修改失败的情况。
PHP下操作mysql数据库要实现事务提交,需注意以下方面:
1, 数据库表存储引擎类型设置为innoDB。默认的mysql表采用MYISAM引擎,是不支持事务的,因此要采用以下语句变更:
mysql> alter table ‘table_name’ engine=innodb;
2,PDO对象设置要设置errmode为Exception,否则第16行SQL执行出错,语句也不会跳到catch段去rollback, 而是继续向下执行直到commit。
1 try { 2 $pdo = new PDO($dsn, $user, $pass); //初始化一个PDO对象,就是创建了数据库连接对象$pdo 3 $pdo->setAttribute (PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION ); 4 $pdo->beginTransaction(); //开启事务 5 $query="正确的语句"; 6 $result=$pdo->prepare($query); 7 8 if($result->execute()){ 9 echo "数据添加成功!"; 10 }else{ 11 echo "数据添加失败!"; 12 } 13 14 15 $query="错误的语句"; 16 $result=$pdo->prepare($query); 17 18 if($result->execute()){ 19 echo "数据添加成功!"; 20 }else{ 21 echo "数据添加失败!"; 22 } 23 24 25 $pdo->commit(); //执行事务的提交操作 26 } catch (PDOException $e) { 27 die ("Error!: " . $e->getMessage() . "<br/>"); 28 $pdo->rollBack(); //执行事务的回滚 29 }
标签:
原文地址:http://www.cnblogs.com/jackkwok/p/4882655.html