SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

PEARライブラリ活用

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

PEARライブラリ活用 (4)

  • X ポスト
  • このエントリーをはてなブックマークに追加

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 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;

 以上で準備は完了です。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
PEAR MDB2を使ってみよう

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
PEARライブラリ活用連載記事一覧

もっと読む

この記事の著者

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2480 2008/05/26 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング