noshi’s diary

ゲームの事、映画やドラマ、思いついた事、プログラミングの事、雑記的なことを書いています

PEAR MDB2インストール

データベース接続関数に便利なpearのモジュールMDB2をインストールしてみました。 これまでは、データベースに接続する際は、mysql_connect関数を使っていましたが、MDB2の使い勝手を知るべく、テスト導入。コマンドラインから、

pear install MDB2

WARNING: channel "pear.php.net" has updated its protocols, use "channel-update pear.php.net" to update downloading MDB2-2.4.1.tgz ... Starting to download MDB2-2.4.1.tgz (119,790 bytes) ..........................done: 119,790 bytes install ok: channel://pear.php.net/MDB2-2.4.1 MDB2: Optional feature fbsql available (Frontbase SQL driver for MDB2) MDB2: Optional feature ibase available (Interbase/Firebird driver for MDB2) MDB2: Optional feature mysql available (MySQL driver for MDB2) MDB2: Optional feature mysqli available (MySQLi driver for MDB2) MDB2: Optional feature mssql available (MS SQL Server driver for MDB2) MDB2: Optional feature oci8 available (Oracle driver for MDB2) MDB2: Optional feature pgsql available (PostgreSQL driver for MDB2) MDB2: Optional feature querysim available (Querysim driver for MDB2) MDB2: Optional feature sqlite available (SQLite2 driver for MDB2) MDB2: To install optional features use "pear install pear/MDB2#featurename" インストールできたのか確認。以下のスクリプトを入力してpearinfo.phpとして保存。ちなみにこのファイルは、pear_infoをインストールしておいたもので、インストール済みのpearのモジュール一覧を確認できるものです。 <?php require_once 'PEAR/Info.php'; $info = new PEAR_Info(); $info->show(); ?> このファイルにアクセス pear_mdb2.gif MDB2が確認されましたので、インストールできたみたいです。 では、ここからMDB2を使ってデータベース接続を試してみます。

<?php
// MDB2 ライブラリの読み込み
require_once("MDB2.php");
// データベース接続
//同意で$dsn = "mysql://ユーザー名:パスワード@localhost/データベース名";
$dsn = array(
"phptype"  => "mysql",
"username" => "ユーザー名",
"password" => "パスワード",
"hostspec" => "localhost",
"database" => "データベース名",
);
//connectメソッドで接続
$mdb2 = MDB2::connect($dsn);
// 文字コード指定。
$mdb2->setCharset( "utf8" );
//接続が成功したかの確認
if (PEAR::isError($mdb2)) { die($mdb2->getMessage()); }
else{ echo '接続成功'; }
//接続を切断
$mdb2->disconnect();
?>

で、このファイルを適当なファイル名で保存し、アップロード。 そして、アクセスしてみると・・・ MDB2 Error: not found の表示が・・・ あれ、おかしいなと思いつつ、エラーの原因を探ってみる。 PEAR公式サイトによると、 MDB2インスタンスを作成した後にこのエラーが発生した場合は、 MDB2 のデータベースドライバが何もインストールされていないことを意味します。 たいていの人は一種類のデータベースしか使用しないでしょうから、 15のドライバファイルをすべてインストールする必要はありません。 たとえば SQLite を使用したい場合は、 pear install MDB2_Driver_sqlite あるいは単純に pear install MDB2#sqlite とすれば動くようになります。 とあります。MDB2のドライバが必要っぽい。 サッソク、コマンドラインからインストールね。今度はyumを使ってインストール。

yum install php-pear-MDB2-Driver-mysql.noarch

Loaded plugins: downloadonly, fastestmirror, priorities, security Loading mirror speeds from cached hostfile * atomic: www5.atomicorp.com * rpmforge: ftp.kddilabs.jp atomic | 1.9 kB 00:00 base | 1.1 kB 00:00 extras | 2.1 kB 00:00 rpmforge | 1.9 kB 00:00 updates | 1.9 kB 00:00 740 packages excluded due to repository priority protections Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package php-pear-MDB2-Driver-mysql.noarch 0:1.4.1-3.el5.centos set to be updated --> Processing Dependency: php-pear(MDB2) >= 2.4.1 for package: php-pear-MDB2-Driver-mysql --> Running transaction check ---> Package php-pear-MDB2.noarch 0:2.4.1-2.el5.centos set to be updated --> Finished Dependency Resolution

Dependencies Resolved

Package Arch Version Repository Size

Installing: php-pear-MDB2-Driver-mysql noarch 1.4.1-3.el5.centos extras 41 k Installing for dependencies: php-pear-MDB2 noarch 2.4.1-2.el5.centos extras 132 k

Transaction Summary

Install 2 Package(s) Upgrade 0 Package(s) Total download size: 173 k Is this ok [y/N]: y Downloading Packages: (1/2): php-pear-MDB2-Driver-mysql-1.4.1-3.el5.centos.noarch.rpm | 41 kB 00:00 (2/2): php-pear-MDB2-2.4.1-2.el5.centos.noarch.rpm | 132 kB 00:00 --------------------------------------------------------------------------------------------------------------------------------------- Total 936 kB/s | 173 kB 00:00 Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : php-pear-MDB2 1/2 Installing : php-pear-MDB2-Driver-mysql 2/2 Installed: php-pear-MDB2-Driver-mysql.noarch 0:1.4.1-3.el5.centos Dependency Installed: php-pear-MDB2.noarch 0:2.4.1-2.el5.centos Complete! ドライバはいったぽい。 そして、再度、先ほどのファイルにアクセスしてみると、 “接続成功”の文字www 無事データベースに接続できました。