PEAR::MDB2のページ
PEAR::MDB2
PEARには、RDBを扱うためのPEAR::DBというパッケージがあるのですが、2007/3時点そのページをみると、「Bug FixとSecurity Fixはするけど、MDB2を使うように」と書かれています。ですので、PEAR::MDB2をインストールしてみましょう。PEAR::MDB2のホームページをみると、PEAR::MDB2はPEAR::DBとMetabase php database abstraction layersをマージしたものだと書かれています。LicenseはBSDライセンスになっています。2007/3時点でv2.3.0がリリースされています(注;3/13に2.4.0がリリースされたようです)。
ダウンロードページのdependenciesをみるとPHP4.3.2以降、PEARパッケージ1.4.0b1以降と書かれています。
RDBを扱うためのパッケージですので、MySQLを利用します。
インストールした環境は以下です。
ソフトウェア | バージョン |
OS | Windows XP(SP2) |
php | 5.2.1 |
MySQL | 5.0.19(3308ポートをlisten) |
PEAR | 1.5.1 |
PEAR::MDB2のインストール
PEAR::MDB2のダウンロードページより、MDB2-2.3.0.tarをダウンロードします。
これを解凍し、MDB2.phpとMDB2フォルダーをPEARのインストールディレクトリ(php.iniのinclude pathesに設定したディレクトリ)にコピーします。
PEAR::MDB2本体のインストールはこれで完了です。
PEAR::MDB2_Driver_mysqlのインストール
PEAR::MDB2は本体(抽象化レイヤー)なので、利用するRDBにあわせたパッケージを追加インストールする必要があります。
今回はMySQLを使いますので、MDB2_Driver_mysqlをインストールします。この「mysql」は、php.iniで設定した拡張dll(php_mysql.dll)と一致している必要があります。
MDB2_Driver_mysqlのダウンロードページより、MDB2_Driver_mysql-1.4.0.tarを落としてきます。
これを解凍すると、MDB2フォルダーがでてきます。このフォルダー配下のものをすべて、先ほどインストールしたMDB2フォルダーに上書きコピーします。
これでMySQLが使える状態になります。
テスト
PEAR::MDB2を解凍すると、docフォルダー下にexampleというフォルダーがあります。
この中にexample_php5.phpというサンプルがありますので、これを動かしてみましょう。
dsnがPostgreSQLを使うような設定になっていますので、自分の環境にあわせて修正します。
私の環境では以下のように直しました。
$dsn = array(
# 'phptype' => 'pgsql',
# 'username' => 'postgres',
'phptype' => 'mysql',
'username' => 'root',
'password' => 'root',
'hostspec' => 'localhost:3308',
'database' => 'test',
);
これをphpの動く場所において、以下のような結果がでればOKです。
last insert id: int(7) last insert id: int(8) output row:
string(0) "" output row:
int(1) output row:
int(1024) output row:
int(-6) output row:
string(25) "MDB2 Error: not supported" output row:
string(123) "mapNativeDatatype: [Error message: method not implemented] [Last executed query: SELECT *
FROM sometable] [Native code: 0] " output row:
array(8) { [0]=> array(6) { ["file"]=> string(32) "C:\php-5.2.1\PEAR-1.5.1\MDB2.php" ["line"]=> int(961)
・・・・
executed (4) { [0]=> string(23) "SELECT * FROM sometable" [1]=> bool(true) [2]=> bool(true) [3]=> string
(21) "MDB2_BufferedIterator" } } } output row:
NULL
このサンプルには、基本的なMDB2の使い方が書かれているので役に立つと思います。
2007年03月16日(金) 14:11:05 Modified by wanderingse