PDO事務處理


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("提交失敗!");
}
相關文章
相關標籤/搜索