PDO事务操作
事务处理在数据库开发过程中有着非常重要的作用,它可以保证在同一个事务中的操作具有同步性。为此,PDO类对MySQL所支持的事务操作进行封装,使用PDO类也可以进行事务的操作,具体操作方法如表1所示。
表1 PDO事务处理
方法名 | 说明 |
---|---|
PDO::beginTransaction() | 启动一个事务 |
PDO::exec() | 执行事务 |
PDO:: rollback() | 回滚一个事务 |
PDO:: commit() | 提交一个事务 |
下面通过代码演示PDO事务处理的使用。
创建C:\web\apache2.4\htdocs\pdo05.php文件,具体代码如下。
1 <?php
2 $dsn = 'mysql:host=localhost;port=3306;dbname=mydb;charset=utf8';
3 $pdo = new PDO($dsn, 'root', '123456');
4 // 开启事务
5 $pdo->beginTransaction();
6 // 执行插入操作
7 $pdo->exec("INSERT INTO `student` VALUES(NULL,'Andy',2)");
8 // 提交事务
9 $res = $pdo->commit();
10 // 执行失败,事务回滚
11 if(!$res){
12 $pdo->rollback();
13 }
上述代码演示了PDO的事务处理,第5行用于开启事务,第9行用于提交事务,第12行用于执行失败时回滚事务。
在实际开发中,当一个完整的事务操作其中的某一个步骤出现问题时,想要回滚至该步骤操作前的状态,并不需要事务内的所有操作都被撤销。此时,就需要设置回滚点,具体设置方式如下所示。
1 // 设置回滚点
2 $pdo->exec('savepoint sp1');
3 // 回滚
4 $pdo->exec('rollback to sp1')
上述代码中,通过使用exec()方法执行SQL语句来完成回滚点的设置和回滚操作,同样,exec()方法也可以执行其他指令来完成事务操作。