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の前処理に加えて、次の形式で追加します.
例:
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 }