PHP

【PHP】トランザクションの書き方

Sara

トランザクションとは?

トランザクションは MySQL データベースに複数のデータを保存するときに役立つ機能です。

例えば、30人分の試験結果をデータベースに保存するとします。

全て問題なく登録できれば良いですが、16人目で何かエラーが起きて登録に失敗するかもしれません。

このとき15人目までの登録処理をキャンセルしてくれるのがトランザクションです。

トランザクションを使うと「全て登録できる」か「全て登録できない」かのどちらかになります。

1件だけ登録できていなかったという状況を防ぐためにも、トランザクションを使えるようになっておきましょう。

準備

PHP ファイルの用意

今回はローカル環境(MAMP)を利用しているので htdocs フォルダに transaction.php というファイルを用意しています。

ファイル名などはご自身の環境に合わせて変更してください。

データベースの用意

データベース名は test として、以下のように user テーブルを用意しています。

カラム名データ型NULL
idintいいえAUTO_INCREMENT
namevarchar(10)いいえ 
ageintいいえ 

データベースに接続する

まずはデータベース接続するコードを書きます。

ユーザー名とパスワード

$user と $password は MySQL 管理画面にログインするときに使っているものです。

XAMPP を使っている方で、ログイン設定を変更していない場合は

// XAMPP
$user = 'root';
$password = '';

となります。

ブラウザで確認

ブラウザで transactions.php を開いて「データベースに接続しました。」と表示されることを確認してください。

トランザクションでデータを保存する

基本的な構造

まずはトランザクションの実行に最低限必要なコードを紹介します。

5行目
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Exception(例外)を受け取るために必要な設定です。

これを書かないと catch で例外を受け取ることができないのでご注意ください。

7行目
$pdo->beginTransaction();

トランザクションを開始します。

11行目
$pdo->commit();

データ保存などのコードに問題がなければ実行されます。
 

14行目
$pdo->rollBack();

途中で問題が起きたら処理を取り消します。

データを保存する

次はデータを保存するコードを

  1. エラーの起きないバージョン
  2. エラーになるバージョン

の2通りで書いて、トランザクションの動きを確認してみましょう。

①エラーの起きないバージョン

22行目の finally には エラーが出ても出なくても最後に実行するコードを書くことができます。

ブラウザで transaction.php を開いてみましょう。「トランザクション開始・終了」のメッセージが出ましたか?

user テーブルにも3つのデータが保存されています。

②エラーになるバージョン

次はエラーになるバージョンのコードにして、トランザクションの動きを確認してみましょう。

11行目の

$pdo->exec('INSERT INTO user(name, age) VALUES("鈴木", 25)');

$pdo->exec('INSERT INTO user(name, age) VALUES("鈴木")');

に変更して、コードを実行してみましょう。

ブラウザにエラーメッセージが表示されて、データも保存されていないと思います。

今回は「鈴木」のデータが保存できなかったので、前の「山田」が取り消されて、次の「佐藤」は実行されませんでした。

このように途中で問題が起こったときに登録処理をキャンセルしてくれるのがトランザクションです。

まとめ

今回は簡単なデータ保存でしたが、カラム数が増えても、以下の構造を押さえておけば簡単にトランザクションを使うことができます。

トランザクションを使ったことがない方もぜひお試しください!

Subscribe
Notify of
0 Comments
古い順
新しい順 人気順
Inline Feedbacks
View all comments
ABOUT ME
Sara
Sara
運営者
書籍やオンライン講座でプログラミングを勉強してフリーランスのプログラマーになりました。
このサイトでは「わかりやすく・シンプル」をモットーに、プログラミングの基礎からアプリ開発まで紹介します。
独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています。
主な使用言語:Java / Kotlin / PHP
>> 詳しいプロフィール
>> お問い合わせ
>> 書籍を出版しました!
本格的に学びたい方へ

Code for Fun プログラミング講座

POINT 01

動くコード

プログラミングの文法を学んでも、そこからどのようにアプリ開発ができるのかイメージが湧きにくいものです。

Code for Fun のプログラミング講座では、ゲームやカレンダーなどアプリとして機能するものを作りながらプログラミングを学ぶことができます。

POINT 02

自分のペースで

オンライン講座なので、ご自身のペースで学習を進めて頂けます。

受講期限もないので、いつでも前のレッスンに戻ることができるので安心です。

お申し込みしたその日からすぐに始めることができます。

POINT 03

個別サポート

プログラミング学習では、エラーが起きることはよくあります。そんな時はお気軽にお問い合わせください!

コメント欄またはメールによるサポートを回数無制限でご利用頂けます。(*講座に関連するご質問のみ対応)

今すぐ無料でお試し

0
この記事にコメントするx
記事URLをコピーしました