Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

PEAR MDB2でPHPからデータベースを操作する

PEARライブラリ活用 (4)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/05/26 14:00

PHPでデータベースにアクセスするには、いくつかの方法が用意されています。本稿では、いま注目の「PEAR MDB2」を用いて、PHPからMySQLを操作する基本的な方法を紹介します。

目次

はじめに

 PHPにはデータベースにアクセスする方法がいくつか用意されています。そのような方法の一つに、「PEAR MDB2」があります。名前の通りPEARのライブラリとして公開されています。PEARにはMDB2のほかに「DB」や「MDB」といったライブラリがあり、現在でも利用することができます。しかしながら、これらの開発はすでに終了しており、開発者はMDB2に移行することが推奨されています。

 本稿では、PEAR MDB2を使って、PHPからデータベースを操作する次のような基本的な方法を紹介します。

  • PEAR MDB2を使うとデータベース管理システム(MySQLやPostgreSQL、SQLite等)に依存しないコードを書くことができる。
  • SQLの実行には、プリペアードステートメントを使うのが基本である(例外あり)。
  • PHPにはPEAR MDB2の他にもデータベースへのアクセス手段が数多く用意されている。それらの中から適切なものを選ぶ指針。

対象読者

  • PHPの基本的な文法を知っている方
  • SQLの基本的な使い方を知っている方

必要な環境

 PHP 5とMySQL 5がインストールされ、動作するようになっている環境が必要です。筆者はXAMPP 1.6.4 for Windows(PHP 5.2.4, MySQL 5.0.45を含む)に、MDB2_Driver_mysqli 1.4.1(後述)をインストールした環境で動作を確認しました。

ドライバのインストール

 MDB2単体ではデータベースにアクセスすることはできません。利用するデータベース用のドライバが必要です。MySQLはもちろん、PostgreSQLやSQLite、Oracle、SQL Serverなどのためのドライバが公開されています(PEARのウェブサイトを参照)。ここではMySQL用のドライバであるMDB2_Driver_mysqliをインストールします(PHP5のみで利用可能。古いバージョン用にはMDB2_Driver_mysqlが用意されている)。

 コマンドプロンプトから次のようにMDB2_Driver_mysqliをインストールします(PEAR error on Config.php Line 1003 in Vista (solution)を参考に、コマンドの実行前に、c:\xampp\php\pear.iniの「"\xampp」を「"C:\xampp」に修正)。

c:
cd \xampp\php
pear install MDB2_Driver_mysqli

 ここではMySQLのドライバだけをインストールしましたが、他のドライバをインストールして、データベース管理システムを切り替えて使うこともできます。MDB2はデータベース接続を抽象化しているので、切り替える際に、PHPのコードの変更は最低限で済むようになっています(標準的なSQLを使用しているなら接続先の指定を変えるだけでデータベース管理システムを変更可能)。

データベースの準備

 解説に使うデータベースを作成します。

InnoDBを有効にする

 まずはInnoDBを有効にしておきましょう。後でトランザクションを試す際にInnoDB型のテーブルが必要になります。InnoDBを有効にしないでテーブルを作成すると、その型はMyISAMになりますが、MyISAMではトランザクションを利用できません。

 my.cnfの「skip-innodb」をコメントアウトし、その下のInnoDBの設定を有効にしておきます。

#skip-innodb #InnoDBの設定をスキップしない
# Uncomment the following if you are using InnoDB tables 
#InnoDBのためのファイルの格納場所
innodb_data_home_dir = C:/xampp/mysql/data/
#InnoDBのためのファイルの初期サイズと拡張方法(ここでは自動)
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = C:/xampp/mysql/data/
innodb_log_arch_dir = C:/xampp/mysql/data/

データベースの作成

 MySQLを再起動し、次のSQLを実行します。

-- データベースを作成
CREATE DATABASE mydb DEFAULT CHARACTER SET utf8;

-- アクセス権限の設定(ユーザ名はtest、パスワードはpass)
GRANT ALL ON mydb.* to test@localhost IDENTIFIED BY 'pass';

-- テーブルを作成(トランザクションを使うため、エンジンはInnoDBにする)
USE mydb;
CREATE TABLE books(
  id INT AUTO_INCREMENT PRIMARY KEY,
  title TEXT NOT NULL,
  publisher VARCHAR(50) DEFAULT '' NOT NULL,
  year INT DEFAULT 0 NOT NULL,
  price INT DEFAULT 0 NOT NULL
) ENGINE=InnoDB;

 以上で準備は完了です。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト 矢吹 太朗(ヤブキ タロウ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2017年5月時点での登録メンバは52名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂き...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:PEARライブラリ活用

もっと読む

All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5