pearのDBとMDB2の違い

2006/10/13 | その他PEAR全般

PEARのDBがメンテナンスモードになったことにより、データベースを扱う次のデフォルトがMDB2になった。しかし使い方が若干違うので、主要な部分だけとりあえずメモ。1行目がDBで2行目がMDB2。

○読み込み
require(‘DB.php’);
require(‘MDB2.php’);

○接続(これはconnectでも動いているっぽい)
$db=& DB::connect($dsn);
$mdb2=& MDB2::factory($dns);

○データをフェッチするモードの設定
$db->setFetchMode(DB_FETCHMODE_ASSOC);
$mdb2->setFetchMode(MDB2_FETCHMODE_ASSOC);

○全行取得
$all = $db->getAll($sql);
$all = $mdb2->queryAll($sql);

○1つだけ取得
$one = $db->getOne($sql);
$one = $mdb2->queryOne($sql);

○1行取得
$row = $db->getRow($sql);
$row = $mdb2->queryRow($sql);

○連番取得(DBではカラムid、MDB2ではカラムsequenceを使う)
$db->nextId($table);
$mdb2->nextId($table);

○文字列のクオート
‘SELECT name FROM people WHERE id = ‘.$db->quoteSmart(1)
‘SELECT name FROM people WHERE id = ‘.$db->quote(1, ‘integer’)

参考:DB-2-MDB2

PEARのMDB2

2006/09/04 | その他PEAR全般

今日からまた新しい開発を始めることにした。
開発を始めるにあたりmojavi2.0をセットアップしていたが、今回からデータベース接続にはMDB2を使用することにした。いちおうDBは今後は追加開発せずメンテナンスのみということだったので、それに準じた。
セットアップがひととおり出来上がったところで簡単なモジュールを作って動作確認をしようとしたところエラーが発生。

MDB2 Error: not found

意味がわからない。何が「not found」なんだ?。そこで調べてみると、どうやらMDB2ではデータベースごとにそれぞれモジュールを別途インストールする必要があるとのことだった。つまり今回はMySQLを使っているので、MDB2以外にMDB2_Driver_mysqlというのをインストールしなくてはいけない。これを入れることによって正常に動作を確認できた。
DBが肥大化したのを教訓に、データベースごとのドライバを別インストールという形にしたのだろう。しかし現状ではエラーメッセージが意味不明なため、最初に使用するときは戸惑うだろう。
何はともあれ準備はできた。これから使い込んでいくとしよう。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net