PDO 거래
풀어 주다: 2016-07-25 09:05:54
pdo 事务
-
- //pdo 实现mysql 事务处理 简单示例
- /*
- 实现向数据库中写入多条数据的事务
- insert into test values ('test123', 'test123')
- */
- $type = 'mysql'; //要连接的数据库类型
- $host = 'localhost'; //数据库主机
- $dbname = 'test'; //要选择的数据库名称
- $password = '';
- $username = 'root';
- $dsn = "{$type}:dbname={$dbname};host={$host}";
- try{
-
- //连接数据库
- $pdo = new PDO($dsn, $username, $password);
- //编码
- $pdo->exec("set names utf8");
-
- //设置错误提示方式
- $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
-
- //开启标准事务
- $pdo->beginTransaction();
-
- //构造sql语句
- //$sql = "insert into test values (?,?)";
- $sql = "insert into test values (:user, :password)";
- //或者使用此sql语句 :user :password 与问号功能相似 绑定参数
-
- $stmt = $pdo->prepare($sql);
-
- //为sql语句中的变量绑定变量
- $stmt->bindParam(':user', $username);
- $stmt->bindParam(':password', $password);
-
- //为sql语句中的变量 赋值
- $username = 'test123';
- $password = '123456';
-
- $stmt->execute();
-
- $rows = $stmt->rowCount();
-
- if($rows<1){
- //如果失败则抛出异常
- throw new PDOexception('第一句sql语句执行失败!', '01');
- }
- $username = 'hello123';
- $password = '123456';
- $stmt->execute();
-
- $rows = $stmt->rowCount();
-
- if($rows<1){
- //如果失败则抛出异常
- throw new PDOexception('第二句sql语句执行失败!', '02');
- }
- $username = 'world123';
- $password = '123456';
- $stmt->execute();
-
- $rows = $stmt->rowCount();
-
- if($rows<1){
- //如果失败则抛出异常
- throw new PDOexception('第三句sql语句执行失败!', '02');
- }
- //如果没有异常被抛出则 sql语句全部执行成功 提交事务
- $pdo->commit();
-
-
- }catch(PDOexception $e){
-
- //如果有异常被抛出 则事务失败 执行事务回滚
- $pdo->rollback();
-
- //输出异常信息
- echo $e->getCode().'-----'.$e->getMessage();
-
- $pdo = null;
-
- }
-
-
- ?>
复制代码
|
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31