>  기사  >  백엔드 개발  >  PDO 거래

PDO 거래

WBOY
WBOY원래의
2016-07-25 09:05:541040검색
pdo 事务
  1. //pdo 实现mysql 事务处理 简单示例
  2. /*
  3. 实现向数据库中写入多条数据的事务
  4. insert into test values ('test123', 'test123')
  5. */
  6. $type = 'mysql'; //要连接的数据库类型
  7. $host = 'localhost'; //数据库主机
  8. $dbname = 'test'; //要选择的数据库名称
  9. $password = '';
  10. $username = 'root';
  11. $dsn = "{$type}:dbname={$dbname};host={$host}";
  12. try{
  13. //连接数据库
  14. $pdo = new PDO($dsn, $username, $password);
  15. //编码
  16. $pdo->exec("set names utf8");
  17. //设置错误提示方式
  18. $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
  19. //开启标准事务
  20. $pdo->beginTransaction();
  21. //构造sql语句
  22. //$sql = "insert into test values (?,?)";
  23. $sql = "insert into test values (:user, :password)";
  24. //或者使用此sql语句 :user :password 与问号功能相似 绑定参数
  25. $stmt = $pdo->prepare($sql);
  26. //为sql语句中的变量绑定变量
  27. $stmt->bindParam(':user', $username);
  28. $stmt->bindParam(':password', $password);
  29. //为sql语句中的变量 赋值
  30. $username = 'test123';
  31. $password = '123456';
  32. $stmt->execute();
  33. $rows = $stmt->rowCount();
  34. if($rows<1){
  35. //如果失败则抛出异常
  36. throw new PDOexception('第一句sql语句执行失败!', '01');
  37. }
  38. $username = 'hello123';
  39. $password = '123456';
  40. $stmt->execute();
  41. $rows = $stmt->rowCount();
  42. if($rows<1){
  43. //如果失败则抛出异常
  44. throw new PDOexception('第二句sql语句执行失败!', '02');
  45. }
  46. $username = 'world123';
  47. $password = '123456';
  48. $stmt->execute();
  49. $rows = $stmt->rowCount();
  50. if($rows<1){
  51. //如果失败则抛出异常
  52. throw new PDOexception('第三句sql语句执行失败!', '02');
  53. }
  54. //如果没有异常被抛出则 sql语句全部执行成功 提交事务
  55. $pdo->commit();
  56. }catch(PDOexception $e){
  57. //如果有异常被抛出 则事务失败 执行事务回滚
  58. $pdo->rollback();
  59. //输出异常信息
  60. echo $e->getCode().'-----'.$e->getMessage();
  61. $pdo = null;
  62. }
  63. ?>
复制代码


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.