PHP PDO事務處理及MYSQLengine=InnoDB,pdomysqlengine
-
如果出現“#skip-innodb”則將“#”去掉,重啟MySQL;
-
如果第一條無法解決,加上配置:default-storage-engine=InnoDB 再重啟MySQL。
- 進入MYsql數據據mysql>show engines;

轉自百度經驗:http://jingyan.baidu.com/article/3a2f7c2e68ac4426afd61108.html
感謝百度經驗
事務處理數據

![]()
1 <?php
2 try{
3 $pdo=new PDO("mysql:host=xxxx;dbname=xxxx","xxxx","xxxx");
4 $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
5 $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0);
6
7 }catch(PDOException $e){
8 echo "數據庫連接失敗:".$e->getMessage();
9 exit;
10 }
11
12 //exce()返回影響的行數;
13 // $affected_rows=$pdo->exec("insert into shops(name,price,num,desn)values('aa','12.1','10','good')");
14 // echo "最後插入的自動增長的id".$pdo->lastInsertId();
15
16 //設置錯誤報告模式
17 //if(!$affected_rows){
18 // echo $pdo->errorCode()."<br>";
19 // print_r($pdo->errorInfo());
20
21 //}else{
22
23 // echo"執行成功";
24 //}
25
26 try{
27 $pdo->beginTransaction();
28 $price=500;
29 $sql="update zhanghao set price=price-{$price} where id=1";
30
31 $affected_rows=$pdo->exec($sql);
32
33 $sql="update zhanghao set price=price+{$price} where id=2";
34
35 $affected_rows=$pdo->exec($sql);
36 echo("交易成功");
37 $pdo->commit();
38
39 }catch(PDOException $e){
40 echo $e->getMessage();
41 $pdo->rollBack();
42 }
43
44 ?>
View Code