PDO事務處理mysql
2014-9-3 10:44:19 By jiancaigege
====================================sql
概要:將多條sql操做(增刪改)做爲一個操做單元,要麼都成功,要麼都失敗。
單條數據不用事務處理
被操做的表必須是innoDB類型的表(支持事務)
MySQL經常使用的表類型:MyISAM(非事務)增刪改速度快、InnodB(事務型)安全性高
更改表的類型爲innoDB類型
mysql> alter table stu engine=innodb;
使用:
在PDO預處理的基礎上添加,以下格式:安全
try{ $m->beginTransaction();//開啓事務處理 //PDO預處理以及執行語句... $m->commit();//提交事務 }catch(PDOException $e){ $m->rollBack();//事務回滾 //相關錯誤處理 }
示例:spa
$m = new PDO($dsn,$user,$pwd); $m->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); try{ $m->beginTransaction();//開啓事務處理 $stmt=$m->prepare("insert into stu(name,sex,age,classid)values(?,?,?,?)"); $data=array( array("user1",1,22,"lamp76"), array("user2",1,20,"lamp76"), array("user3",0,22,"lamp76") ); foreach($data as $v){ $stmt->execute($v); echo $m->lastInsertId(); } $m->commit(); echo "提交成功!"; }catch(PDOException $e){ $m->rollBack();//回滾 die("提交失敗!"); }