PHPでデータベース(DB)にアクセスする方法のうち,今回はDBの種類ごとに用意された関数を用いるものを紹介します。関数とは,ある処理のまとまりを記述したもので,引数(ひきすう)というパラメータを関数に渡した後,戻り値というデータが得られるようになっています。
DBアクセスの手順
DBアクセスは,おおむね以下のような手順で行います。
- DBに接続
- SQLを実行-必要に応じて実行結果を参照
- DBから切断
DBアクセスの種類
DBアクセスには,いくつかの種類があります。それは保存されるデータに対してどのような操作をするかで違いがあります。以下のa.からc.の処理を行うプログラムを更新系,d.の処理を行うプログラムを参照系と呼ぶことがあります。
更新系と参照系では,実行結果が大きく異なります。更新系では,処理が実行されたデータの数などを得られるオブジェクトが実行結果となります。参照系の実行結果は,条件に応じて検索されたデータの一覧です。
また,本稿では扱いませんが,a.からd.までの処理をまとめて行うストアドプロシージャ(stored procedure)も,DBアクセスにあたって知っておきたい機能です。これは,DBサーバの中にPHPの関数のようなプログラムが収められたものです。PHPプログラムからプロシージャに引数を渡して実行すると,DBサーバ内で処理が実行され,実行結果が戻り値として得られるというものです。
たくさんのSQL文をまとめて実行したい時や,PHPプログラムの処理負荷を軽減したい時などにストアドプロシージャは活用できます。
データベースの構築
DBアクセスを試みる前に,アクセスの対象となるデータベースを構築しておきます。ここからはPostgreSQL8.3 Windows版の場合で説明します。
DBアクセスの対象は,DB内に構築されたテーブルです。テーブルは表計算における1つの表のように,複数の列や行を持った構造になっています。ここではid, title, urlという3つの列を持ったbookmarkというテーブルを作成します。
テーブルを作成するには,CREATE TABLE文をDBに対して実行します。このとき,同じurlが複数登録されないようにしています。また,今回はデータを追加するごとに自動的に番号をつける(採番する)シーケンスを用いますので,CREATE SEQUENCE文も実行します(リスト1)。
リスト1 テーブルbookmarkを作成するためのSQL文(PostgreSQL用)
CREATE SEQUENCE recid;
CREATE TABLE bookmark (
id INTEGER PRIMARY KEY NOT NULL DEFAULT NEXTVAL( 'recid' ),
title VARCHAR(100) NOT NULL,
URL VARCHAR(200) NOT NULL UNIQUE
);
リスト1のようなSQL文は1文ずつ実行するよりも,あらかじめファイルに保存しておいて,"psql -U postgres データベース名 < ファイル名" のように一括して実行すると便利です。なお,postgresの部分はユーザ名というもので,実行環境により異なる場合があります。そのかわり,SQL文に誤りがないかを事前によく確認しておいてください。
テーブルが作成できたら,DBアクセスを行うPHPプログラムを作成していきましょう。

