PDO取引

4899 ワード

PDO取引
2014-9-3 10:44:19 By jiancaigege====================================
概要:複数のsql操作(削除変更)を1つの操作ユニットとして使用すると、いずれも成功するか、失敗します.単一のデータがトランザクションなしで操作されるテーブルは、innoDBタイプのテーブル(トランザクションをサポート)MySQLでよく使用されるテーブルタイプでなければなりません.MyISAM(非トランザクション)の削除速度が速く、InnodB(トランザクション)セキュリティが高い変更テーブルのタイプはinnoDBタイプmysql>alter table stu engine=innodbです.使用:PDOの前処理に加えて、次の形式で追加します.
 1 try{

 2 

 3 $m->beginTransaction();//      

 4 

 5 //PDO         ...

 6 

 7 $m->commit();//    

 8 

 9 }catch(PDOException $e){

10 

11 $m->rollBack();//    

12 //      

13 }

 
例:
 1 $m = new PDO($dsn,$user,$pwd);

 2 $m->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

 3 try{

 4 $m->beginTransaction();//      

 5 

 6 $stmt=$m->prepare("insert into stu(name,sex,age,classid)values(?,?,?,?)");

 7 $data=array(

 8 array("user1",1,22,"lamp76"),

 9 array("user2",1,20,"lamp76"),

10 array("user3",0,22,"lamp76")

11 );

12 foreach($data as $v){

13 $stmt->execute($v);

14 echo $m->lastInsertId();

15 }

16 $m->commit();

17 echo "    !";

18 }catch(PDOException $e){

19 $m->rollBack();//  

20 die("    !");

21 }