今からスタート! PHP

第10回 データベースへのアクセス[関数編]

この記事を読むのに必要な時間:およそ 2 分

PHPでデータベース(DB)にアクセスする方法のうち,今回はDBの種類ごとに用意された関数を用いるものを紹介します。関数とは,ある処理のまとまりを記述したもので,引数(ひきすう)というパラメータを関数に渡した後,戻り値というデータが得られるようになっています。

DBアクセスの手順

DBアクセスは,おおむね以下のような手順で行います。

  1. DBに接続
  2. SQLを実行-必要に応じて実行結果を参照
  3. DBから切断

DBアクセスの種類

DBアクセスには,いくつかの種類があります。それは保存されるデータに対してどのような操作をするかで違いがあります。以下のa.からc.の処理を行うプログラムを更新系,d.の処理を行うプログラムを参照系と呼ぶことがあります。

  • a. 追加-新たなデータを保存する(INSERT文)
  • b. 更新-保存されているデータの内容を変更する(UPDATE文)
  • c. 削除-保存されていたデータを削除する(DELETE文)
  • d. 参照-保存されているデータの一覧を参照する(SELECT文)

  • 更新系と参照系では,実行結果が大きく異なります。更新系では,処理が実行されたデータの数などを得られるオブジェクトが実行結果となります。参照系の実行結果は,条件に応じて検索されたデータの一覧です。

    また,本稿では扱いませんが,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プログラムを作成していきましょう。

    著者プロフィール

    沖林正紀(おきばやしまさのり)

    SE/プログラマを経て,WebアプリケーションやXMLなどについて雑誌記事や書籍の執筆活動を始める。大手メーカで製品資料の作成や,セミナーの講師を担当したこともある。現在は,取材記事や製品レビューなどに執筆活動の幅を広げる一方,プログラミング教材の開発も手がけている。

    著書

    コメント

    コメントの記入