データベース(DB)は,さまざまな処理によって発生したデータを保存しておく重要なシステム基盤です。また,保存されたデータを随時読み込んで(参照して)Webブラウザ画面に表示するためにも,よく用いられます。
ちなみに情報システムのデータベースは,多くがリレーショナル・データベース(RDB)です。本稿でもそれに倣い,データベースはRDBを指すものとします。
DBアクセス機能の概要
PHPプログラムからDBにアクセスする機能はいくつかありますが,PHPの処理系自身で用意されているのは次の2つです。
- 組み込み関数
-
- DBの種類ごとに用意された関数を用いてアクセスする
- PHP5よりも前から広く用いられてきた機能
- PDO
-
- DBの種類を問わず,統一化された方法でアクセスする
- PHP5から導入された新しい機能(PHP5.1から標準)
ただし,これらは用意されているとはいっても,すぐにすべての機能が利用できるとは限りません。DBごとに機能を利用するかどうかを設定する必要があります。もしLinuxなどでソースコードからコンパイルしたPHP処理系を用いている場合は,必要な機能がコンパイル済みであるかも事前に確認しておかなくてはなりません。
DBアクセスのための準備
PHPプログラムからDBにアクセスできるようにするためには,以下に列挙するようないくつかの準備が必要です。それを順に説明していきます。
- 利用するDBの種類を確認
- DBサーバのインストールと動作確認
- SQLの習得
- データ保護とセキュリティ確保への配慮
1. 利用するDBの種類を確認
DBアクセスを実践する前に確認しておきたいのは,アクセスするDBの種類です。なぜなら,これによってPHP処理系に必要な設定や実行する関数の種類が変わるからです。
執筆時点で最新のPHP5.2.5では,以下のDBに対応した組み込み関数をサポートしています。このほかに,DBのAPIなどに対応したものもあります。設定やインストールの方法は,それぞれのモジュールの説明に従ってください。
- Firebird/InterBase
- DB2/Cloudscape/Apache Derby
- Informix
- Ingres II
- MaxDB
- MySQL
- mSQL
- ODBC
- Oracle
- Ovrimos SQL
- PostgreSQL
- SQL Server
- SQLite
- Sybase
関数を実行できるようにするには,php.iniというファイルを変更します。このファイルはPHP処理系に関する設定が記述されているファイルですから,内容を変更する前にコピー(バックアップ)をとっておいたほうが良いでしょう。
たとえば,PHPのWindows版処理系でPostgreSQLに対応した関数を用いるときは,php.iniの以下の行の先頭にある;を削除します。このファイルには,他にもアクセスのための設定(pgsql.XXXXX = value)が記述されていますので,必要に応じてそれらも変更してください。
[変更前] ;extension=php_pgsql.dll
[変更後] extension=php_pgsql.dll
DBにアクセスするときは日本語を用いることも多いため,マルチバイト関連の関数を実行できるように,以下の行も変更しておくと良いでしょう。他の設定(mbstring.XXXXX = value)も必要に応じて変更してください。
[変更前] ;extension=php_mbstring.dll
[変更後] extension=php_mbstring.dll
2. DBサーバのインストールと動作確認
利用するDBサーバが決まったら,それらをインストールし,動作を確認します。インストールと起動の方法についての説明は割愛しますが,自分で開発環境を構築する場合には,少なくともサーバ(サービス)の起動と停止,DBアクセスを行うクライアント(コマンドプロンプトなど)からのSQLの実行はできるようにしておくべきでしょう。
3. SQLの習得
SQLとは,DBサーバに対してアクセスするときに用いる言語で,仕様のほとんどの部分が規格によって標準化されています。ですから標準化されている部分については,1. や 2. の前に習得しておくのがベストです。
しかし,DBの種類によって仕様が異なる部分もあるため,標準化された部分のみでDBを自在に扱えるとはいえないのが実情です。SQL以外に実行しなければならないコマンドもあります。もし事前に利用するDBの種類が分かるのであれば,それで実行可能なSQLとコマンドをまず習得するというのも,現実的な選択かもしれません。
4. データ保護とセキュリティ確保への配慮
情報システムで扱うデータには,業務上の秘密事項や個人情報など,扱いに配慮を要するものが含まれます。そのため,データの紛失・漏洩・散逸といった事態を引き起こさないよう,データを保護し,セキュリティを確保する必要があります。
ことPHPプログラムによるDBアクセスにおいては,プログラムを設計する時点で配慮すべきこととして,パスワードのように機密性の高いデータは暗号化して保存したり,ユーザからのアクセスによって,本来公開すべきでないデータを公開してしまうことがないようにするなどがあります。

