MDB2の便利な機能

初めまして。静岡支社で働く事になりましたnagayasuです。
このブログでは技術的な情報をメイン書いていきたいと思います。

今回は初めての投稿なので、日頃よく使うPEAR::MDB2を取り上げたいと思います。


PEAR::MDB2はPEAR::DBの代替として開発が進んでいるDB抽象化ライブラリです。
使用方法はPEAR::DBを意識して作られているため、PEAR::DBの経験があれば比較的簡単に使えると思います。

PEAR::MDB2ではExtendedモジュールをロードする事で、便利なメソッドを使用できるようになります。

  • autoExecute
  • autoPrepare
  • getAfterID
  • getAll
  • getAssoc
  • getBeforeID
  • getCol
  • getOne
  • getRow
  • limitQuery

Extendedモジュールはロードしてから使用します。


$mdb2 =& MDB2::singleton(DSN);
$mdb2->loadModule('Extended');
$mdb2->extended->getOne("SELECT COUNT(*) FROM t_foo");

更新クエリでは便利なautoExecuteを利用します。

autoPrepare() および autoExecute() は、うんざりするような INSERT、UPDATE、DELETE や SELECT 文を書く手間を軽減します。 これらの SQL 文を使用していると、例えばテーブルにフィールドを追加した場合などの メンテナンスが大変ですよね? autoPrepare() および autoExecute() を使用するには、 Extended モジュールを 使用する必要があります。

http://pear.php.net/manual/ja/package.database.mdb2.intro-auto.php

メソッドの使用方法はマニュアルに記載があります。


$mdb2->extended->autoExecute('t_foo', $insertValues, MDB2_AUTOQUERY_INSERT);
$mdb2->extended->autoExecute('t_foo', $updateValues, MDB2_AUTOQUERY_UPDATE, 'id=' . $mdb2->quote($id));
$mdb2->extended->autoExecute('t_foo', null, MDB2_AUTOQUERY_DELETE, 'id=' . $mdb2->quote($id));

quoteメソッドは第二引数に第一引数の型を指定しますが、省略した場合MDB2が内部で自動的に型判定を行います。 APIの様なシンプルな取得/更新クエリであれば、Extendedモジュールを使用する事で簡単に作成する事ができますね。 MySQL5.0からはViewに対応している為、最近は結合したViewに対してSELECTするやり方を多用しています。