Heim  >  Artikel  >  Backend-Entwicklung  >  pdo 事务

pdo 事务

WBOY
WBOYOriginal
2016-07-25 09:05:541047Durchsuche
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 //如果失败则抛出异常
  35. throw new PDOexception('第一句sql语句执行失败!', '01');
  36. }
  37. $username = 'hello123';
  38. $password = '123456';
  39. $stmt->execute();
  40. $rows = $stmt->rowCount();
  41. if($rows //如果失败则抛出异常
  42. throw new PDOexception('第二句sql语句执行失败!', '02');
  43. }
  44. $username = 'world123';
  45. $password = '123456';
  46. $stmt->execute();
  47. $rows = $stmt->rowCount();
  48. if($rows //如果失败则抛出异常
  49. throw new PDOexception('第三句sql语句执行失败!', '02');
  50. }
  51. //如果没有异常被抛出则 sql语句全部执行成功 提交事务
  52. $pdo->commit();
  53. }catch(PDOexception $e){
  54. //如果有异常被抛出 则事务失败 执行事务回滚
  55. $pdo->rollback();
  56. //输出异常信息
  57. echo $e->getCode().'-----'.$e->getMessage();
  58. $pdo = null;
  59. }
  60. ?>
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn