悩む人PHPを学習中でDBを用いた実装をしたいけど、DB連携の方法が分からない。いう方向けに解説します。トランザクションPHP、MySQLとはPHPPHPは、Webページを動的に生成できるサーバサイドのプログラミング言語です。Language)を用いてWebシステムのユーザID、パスワード等の情報を取扱うことができます。参考:PHP公式MySQLMySQLは、オープンソースのデータベース管理システム(DBMS)です。DBMSは、他に以下のようなものがあります。Database(Oracle社)SQLServer(Microsoft社)PostgreSQL(オープンソース)SQLite(オープンソース)今回は、オープンソースでかつシェアが大きく学習コストの低いMySQLについて解説します。DBを使う場合は、とりあえずMySQLから始めれば問題ありません。参考:MySQL公式PDOクラスとはPHPからDBを操作する場合は、PDOクラスを使います。Objectの略で、PHPに標準実装されている機能です。DB接続に関連するメソッドをたくさん備えています。Object)PDOクラスを使ってDBを操作する以下に、コードの実装例を示します。DB接続PDOインスタンスを作成し、引数にDSN、ユーザ名、パスワードを渡してやります。パスワード);query文DBのデータを操作しない場合は、query文を使います。$stmt->fetch(PDO::FETCH_ASSOC);フェッチモードfetchやfetchAllメソッドなどでデータ取得形式としてフェッチモードがあります。指定した1つのカラムのデータのみを取得するFETCH_BOTHキー配列と連番でデータを取得できる点で汎用的ですが、取得してくるデータが大きくなりがちです。理由がない場合は、次に説明するFETCH_ASSOCを使うようにするとよいでしょう。}FETCH_ASSOCキー配列のみを取得します。基本的にはこのフェッチモードを使っておけば問題はありません。}FETCH_KEY_PAIR特定の2つのカラムの値のみ取得したい場合に使用します。}FETCH_COLUMN特定の1つのカラムの値のみ取得したい場合に使用します。execute構文INSERT文など、ユーザからのリクエストをそのままSQLの組み立てに使用するとSQLインジェクションのセキュリティリスクがあります。--'がリクエストされた場合、以下のようなSQLが組み立てられ指定したテーブルのデータが全て削除されてしまいます。users;--');prepareメソッドでプリペアドステートメントを用意し、あとからexecuteメソッドで値を渡してやる必要があります。'taro@example.com',]);例外処理PDOクラスを用いてDBに対してデータ操作の処理を実行する際に、処理の内容によっては失敗することがあります。発生したエラーに対して適切な対応をするため、例外処理を用います。PDOクラス用の例外処理クラスとしてPDOExceptionクラスが用意されているため。参考:PHPリファレンス(PDOExceptionクラス)例外処理の構文は以下の通りです。{データ操作が失敗した場合の処理}}SQLの構文エラーが含まれているので例外処理がされ、エラーが表示されます。1}トランザクショントランザクションとは、クエリの実行内容をひとまとまりにしてDBに反映させる操作のことをいいます。これはACID特性(Atomicity(原子性)、Consistency(一貫性)、Isolation(独立性)、Durability(永続性))を満たします。PDOを用いたトランザクションの実装は以下のようになります。$e->getMessage();}beginTransactionメソッドでトランザクションを開始し、同時に反映したい複数のクエリを実行します。クエリを実行し終わったらcommitメソッドでDBに変更を反映します。例外を受け取った場合など、DBへの変更をもとに戻したい場合はrollbackメソッドを使います。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。コメントデータの処理方法の詳細はこちらをご覧ください。関連記事Code【初心者向け】jQueryでAjax通信を実装する方法jQueryを使ってAjax通信を実装する方法について解説します。PHP【Docker】PHP+Nginx+MySQLの開発環境を作る方法DockerでローカルにPHP+Nginx+MySQLの開発環境を作る方法を解説します。サーバを立てるほどでもないけど、サクッと開発環境を立ち上げて動作確認したい場合に便利です。いう方向けに解説します。...PREV【未経験】独学でWeb系エンジニアに転職する方法NEXT将来の不安は無くせないけど、減らすことはできますプロフィールトモアキ大手メーカからソフトウェアエンジニアに転職しました。株の短期トレードもやってます。