PDOトランザクション
-
- //pdo は、mysql トランザクション処理の簡単な例を実装します
- /*
- 複数のデータをデータベースに書き込むトランザクションを実装します
- テスト値に挿入します ('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 = "テスト値に挿入 (?,?)" ;
- $sql = "テスト値に挿入 (: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 //失敗した場合は例外をスローします
- throw new PDOException('最初の SQLステートメントの実行に失敗しました! ', '01');
-
- }
-
-
- $username = 'hello123';
- $password = '123456';
-
- $stmt->execute();
-
- $rows = $stmt->rowCount ();
-
- if($rows //失敗した場合は例外をスローします
- throw new PDOException('2 番目の SQL ステートメントの実行に失敗しました!', '02');
-
- }
-
-
- $ ユーザー名 = 'world123';
- $パスワード = '123456';
-
- $stmt->execute();
-
- $rows = $stmt->rowCount();
-
- if($rows //失敗した場合は例外をスローします
- throw new PDOException('3 番目の SQL ステートメントの実行に失敗しました!', '02');
-
- }
-
- // 例外がスローされなければ、すべての SQL ステートメントは正常に実行されます実行され、トランザクションが送信されます。
- $pdo->commit();
-
-
- }catch(PDOException $e){
-
- //例外がスローされた場合、トランザクションは失敗し、トランザクションはロールバックされます
- $pdo ->rollback();
-
- //例外情報を出力します
- echo $e->getCode().'-----'.$e->getMessage();
-
- $pdo = null;
-
- }
-
-
- ?>
コードをコピー
|