ホームページ  >  記事  >  バックエンド開発  >  PDOトランザクション

PDOトランザクション

WBOY
WBOYオリジナル
2016-07-25 09:05:54998ブラウズ
PDOトランザクション
  1. //pdo は、mysql トランザクション処理の簡単な例を実装します
  2. /*
  3. 複数のデータをデータベースに書き込むトランザクションを実装します
  4. テスト値に挿入します ('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 = "テスト値に挿入 (?,?)" ;
  23. $sql = "テスト値に挿入 (: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('2 番目の SQL ステートメントの実行に失敗しました!', '02');
  43. }
  44. $ ユーザー名 = 'world123';
  45. $パスワード = '123456';
  46. $stmt->execute();
  47. $rows = $stmt->rowCount();
  48. if($rows //失敗した場合は例外をスローします
  49. throw new PDOException('3 番目の 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. ?>
コードをコピー


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。