PHP PDO事务处理及MYSQLengine=InnoDB

  1. 如果出现“#skip-innodb”则将“#”去掉,重启MySQL;

  2. 如果第一条无法解决,加上配置:default-storage-engine=InnoDB 再重启MySQL。

  3. 进入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
原文地址:https://www.cnblogs.com/yuanjiehot/p/4321212.html