PHPでDB接続する方法とは?PDOの使い方を、例を用いて詳しく解説します

Webシステムの開発に適したPHPは、DB接続を利用しやすいプログラム言語です。もしPHPでDBに接続するプログラムを作るなら、ぜひPDOクラスの利用を検討してください。今回は、PDOを使ったPHPからDBに接続する方法について紹介します。

PHPでDBに接続するには

PHPは、Webシステムの開発に向いたプログラム言語で、多くのシステム開発で利用されています。そして、PHPにはいろいろなメリットがありますが、SQLデータベースに接続し易い点はメリットの中でも最大でしょう。

では、どのような点がメリットなのでしょうか。次から、PHPとDBの関係について解説します。

PHPはDB接続に向いている

PHPは、Webサーバーで使われるプログラム言語の中でも、SQLデータベースを活用した情報システムを作り易いプログラム言語です。

なお、今はいろいろなフレームワークがあり、それらを活用すれば、他のプログラム言語でもSQLデータベースを利用できます。その点PHPは、フレームワークを利用しなくても、標準でSQLデータべースにアクセスできる関数が使えます。

さらに、PHPでは、DB接続の使い易さを考慮したPDOクラスが標準で利用できます。そのため、覚えることの多いフレームワークを使わなくとも、使い易いPDOクラスを活用し、DBを利用したWebシステムが作れる点も大きなメリットです。

PHPでDBに接続するには

PHPは、Web開発でよく利用されるプログラム言語ですが、PHPそのものにはSQLデータベースに接続する機能はありません。PHPでSQLデータベースに接続するためには、専用のモジュールを組み込む必要があります。

なお、CentOSやUbuntuなどのLinuxディストリビューションに組み込まれているPHPは、yumコマンドやaptコマンドで、簡単に専用モジュールを組み込めます。

もし、LinuxのPHPでDBに接続する場合は、専用モジュールがインストールされているかチェックしてください。

DB用モジュールの準備

例えば、CentOSやUbuntuなどのLinuxでよく使われるオープンソースのSQLデータベースであるmariadbやpostgreSQLをPHPから利用するには、次のモジュールが必要です。

  • mariadb用モジュール:php-mysql
  • postgresql用モジュール:php-pgsql

さらに、Oracle Databaseや、Microsoft SQL serverなど有償のSQLデータベースをPHPから利用する場合も、PHP側に専用のモジュールを組み込む必要があります。

CentOSならyumコマンドで、またUbuntuならaptコマンドを使えば、PHPに組み込めるモジュールの一覧を表示したり、モジュールを指定してインストールすることが可能です。

もし、SQLデータベースの接続に必要なモジュールがインストールされていない場合は、yumコマンドやaptコマンドを利用してインストールしてください。

PDOの基本

PHPは、SQLデータベースソフト毎のモジュールを組み込むと、そのDBを利用する専用の関数も同時に組み込まれます。しかし、今は、個々のDB専用の関数を利用するのではなく、PDOクラスを利用して接続するのが一般的です。

次から、PDOの基本について解説します。

そもそもPDOとは何?

今回紹介するPDOとは、PHP Data Objectの略で、PHPの中からデータベースにアクセスするためのインターフェイスを提供する拡張モジュールです。そして、最新のPHPには標準で組み込まれているので、PHPをインストールすればすぐに利用できます。

PDOのメリットは、接続するSQLデータベースに関係なく、共通のインターフェイスが使える点です。ただし、先ほども説明したように、そのDB専用のモジュールを組み込んでいないと利用できないので注意してください。

PDOはプリペアドステートメントが使える

最近のWebシステムから利用するSQLでは、プリペアドステートメントが使われています。そして、PDOを利用することで、プリペアドステートメントも利用可能です。ぜひ、PHPによるDB接続にPDOを活用し、Webシステムの開発にプリペアドステートメントを利用してください。

なお、プリペアドステートメントとは、実行したいSQLのテンプレートのようなものを用意し、後からパラメータ変数を指定してSQLを合成し、そのSQLを実行する方法です。そして、プリペアドステートメントを利用することで、複雑なSQLを安全に編集できたり、SQLインジェクション攻撃に対する対策としても使われます。

PDOのエラー処理に注意を

先ほど説明したように、PHPの標準で組み込まれており、プリペアドステートメントでも活用できるPDOですが、安全に使うためにはエラー処理に注意が必要です。

PDOは、処理中にエラーやワーニングが発生した場合、その内容に合わせたエラーコードを発行し、それをスローします。そのスローされたエラーコードは、try~catchの仕組みで受け取れるので、適切に処理するプログラムを作っておきましょう。

PDOを使ったDB接続例

これまで説明したように、PHPでDBに接続する場合は、PDOを使うと便利です。しかし、PDOを使ったDB接続の方法が解らない、という方もいるでしょう。

次から、PDOからSQLデータベースのmariadbに接続する例を使い、PHPにおけるDB接続の書き方について解説します。

PDOをインスタンスする文法

PDOクラスを利用するには、newコマンドでインスタンスする必要があります。そして、インスタンスする際、接続するデータベースやアカウントなどの指定が必要です。次に、PDOをインスタンスする際の文法と使用例を紹介します。

PDOをインスタンスする文法

new PDO( DSNの文字列, アカウント名, パスワード, ドライバーオプション )

DSNの文字列には、利用するデータベースソフト、接続するデータベース名、データベースが稼働しているサーバー、ポート番号などを記述します。(例:mysql:dbname=test;host=localhost)

そして、アカウント名は、データベースに接続する際のアカウント名を指定します。また、パスワード名はアカウント名に対応したパスワードです。最後のドライバーオプションは、利用するデータベースソフトに応じて使用します。

PDOをインスタンスする例

次に、PDOを利用してデータベースに接続する例を紹介します。

この例では、localhostで稼働しているmysqlのデータベースtestに接続する例です。なお、データベースソフトとして、mysqlが指定されていますが、mariadbにも接続できます。そして、mariadbに接続するアカウントがuserで、対応するパスワードがpasswordです。

また、先ほど説明したようにPDOのエラー処理のためにtry~catchの中で、newコマンドを使い、PDOをインスタンスしています。

まとめ

今回説明したように、PHPには、DBに接続するPDOクラスがあり、これを利用することでデータベースを活用したWebサービスを簡単に作れます。

さらにPDOクラスを利用することで、プリペアドステートメントを利用したセキュリティ対策が取られた安全なWebサービス作成も可能です。ぜひ、PDOを利用してDBに接続したPHPのプログラムを作ってみてください。

BLOGコンテンツをパーソナライズします

あなたは現在「プログラミング学習者」ですか?