前面所将仅仅是在纯mysql下的讲解,这节就是要将其搬到PDO台面上来了。
- 将自动提交关闭。
- SetAttribute下有一个PDO::ATTR_AUTOCOMMIT
将其设置为0即可关闭,如:$pdo ->setAttribute(PDO::ATTR_AUTOCOMMIT,0);
切记在最后的时候要将其设置为开启。如:$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,1);
<?php try{ $pdo = new pdo("mysql:host=localhost;port=3306;dbname=test","root",""); }catch(PDOException $e){ echo $e->getmessage(); } $pdo->setattribute(PDO::ATTR_AUTOCOMMIT,1); echo "PDO对象创建成功.<br />"; $pdo->setattribute(PDO::ATTR_AUTOCOMMIT,0);//脚本执行完语句以后要将程序恢复原来的样子 ?>
2.开启事件处理
在PDO就有那么一个方法:PDO::beginTransaction
其作用就是用来开启事物处理的。
用法是直接调用即可:$pdo ->beginTransaction();
跟着百度学PHP[14]-PDO之Mysql的事务处理1中的案例:
<?php try{ $pdo = new pdo("mysql:host=localhost;port=3306;dbname=test","root",""); }catch(PDOException $e){ echo $e->getmessage(); } $pdo->setattribute(PDO::ATTR_AUTOCOMMIT,0); echo "PDO对象创建成功.<br />"; try{ $pdo -> beginTransaction(); $price = 10; //张三减去十元 $sql_1 = $pdo->exec("update demo set yue=yue - {$price} where username ='zhangsan'"); $sql_2 = $pdo ->exec("update demo set yue=yue + {$price} where username ='lisi'"); if ($sql_1) { echo "张三成功转账{$price}元。"; } if ($sql_2) { echo "李四成功收到{$price}元"; } }catch(PDOException $e){ echo $e->getmessage(); $pdo->rollback(); } $pdo->commit(); $pdo->setattribute(PDO::ATTR_AUTOCOMMIT,1);//脚本执行完语句以后要将程序恢复原来的样子 ?>