PHPのデータベースアクセス

PHPによるMySQLデータベースを活用するWebアプリケーション開発

データベースを使用すると、データの検索、抽出、並べ替え(ソート)といった処理が非常に簡単にできるようになります。これまで自分でTSVやCSVなどのデータファイルを作成し、ファイルを読み書きしてその構造を意識しながら個別に書いていた処理が、簡単なSQL文ですぐに実現できるようになるからです。

実際、私もフリーソフトのデータベースMySQLで簡単なソート機能付データ一覧テーブル(エヴァの栞内ファンフィクションデータベース)を作ってみたのですが、ソート処理をSQL文一つで行うことができる上に「データ構造の変更」もMySQLのインターフェースで容易に行えるので、かなり楽でした。今回は、MySQLを例に、PHPからデータベースにアクセスしてデータベースのデータを使ってWebページを出力する流れを見てみることにしましょう(PostgreSQLなど他のデータベースも同様に扱えます)。

データベースの作成とデータ取得

データベースのデータを持ってくるには、まずデータベース(とデータを格納するテーブル)を作らなくてはなりません。データベースが使えるレンタルサーバーであれば、WebベースのMySQL管理ツールが用意されている場合も多いので、それを使うと楽です。あるいは、SQLの練習もかねてテーブルの作成、データの登録を行うSQLを実行するPHPスクリプトを書いてみても良いでしょう。
とりあえず、連番のIDと名前など簡単なデータベースを作ってみてください。

データベースのテーブルができたら、PHPに用意されている関数でデータベースにアクセスします。データベースからデータを持ってくる流れは、

  1. mysql_connect()でMySQLに接続
  2. mysql_select_db()で操作対象DB選択
  3. mysql_query()でテーブルからデータを取得
  4. mysql_fetch_array()で取得したデータの各行のデータを取得し、処理
  5. mysql_close()でデータベースを閉じる

という流れになります。

最初のデータベース接続は、レンタルサーバー業者から指定されたパラメーターで

  $db = mysql_connect("***.**.jp", "userame", "pass");

のように、データベースの場所、ユーザー名、パスワードを引数にmysql_connect()を呼び出し、返された値を保存しておきます。ただし、エラーで接続できない可能性もあるので、返される値の検証を忘れないようにしましょう。

無事に接続できたら、mysql_connect()の返り値とデータベース名を指定して

  mysql_select_db("dbname", $db);

のようにmysql_select_db()を呼び出します。これで、指定のデータベースが処理対象になりますので、後はそのデータベースに対してmysql_query()を呼び出し、SQL文を実行していくだけです。

たとえば、この状態で

  $res = mysql_query("select * from table1");

とすると、$resにtable1の内容を持ってくることができます。そして、持って来た内容はmysql_fetch_array()で、各行ごとに列名をキーとする配列に格納することができる(mysql_fetch_array()は、呼び出すごとに次の行が選択され、最後に来るとfalseを返す)ので、

  while ($item = mysql_fetch_array($res)) {

    print $item['name'];

  }

とすると、「データベースdbname内のtable1に格納されている全データ行のname列」を$item['name']で順次参照し表示できます。表示するデータを絞り込んだり、一定の条件でソートする場合は、SQL文にwhere句やorder句を追加しましょう。

最後に処理が終わったら、mysql_close()でデータベースを閉じます。

以上で見たように、PHPでデータベースからデータを持ってくるのは、非常に簡単です。特に、複数のデータを使ったり、項目数が多いデータを扱いたい時には、威力を発揮するでしょう。また、SQL文やデータベースの基本的な操作は覚えておくと便利な場面も多いので、データベースとPHP対応のWebサーバーが使える環境をお持ちなら、一度「データベースWebアプリケーション」を作ってみてはいかがでしょうか。

Webアプリ実験室