PEAR::DBを使ってみる(接続からQuery発行まで)
PEARで一番人気のあるPEAR::DBを使ってみます。
PEAR::DBを使うと、データベースの種類を意識することなく制作出来ます。
例えば、「MySQLで開発をしたシステムをPostgreSQLに移行する」ということが起きた場合、標準の関数を使って開発を行なっているとプログラムコード自体を変更する必要があります。システムが大きい程、大変な作業になります。
PEAR::DBを使うとデータベースの乗り換えなどが発生してもスムーズに移行することが出来ます。
PEAR::DBをダウンロードして、インストールします。
PEAR::DBをrequire_onceを使って読み込みます。
require_once "DB.php";
次にデータベースの情報を配列に挿入します。
$dsn = array(
"phptype" => "mysqli",
"username" => "user",
"password" => "password",
"hostspec" => "localhost",
"database" => "pear",
);
phptypeには使用するデータベース名、usernameとpasswordにはデータベースのユーザーIDとパスワードを挿入します。hostspecにはhost名を挿入、databaseにはデータベース名を挿入します。
phptypeで使用可能なデータベースは以下の通りです。
mysql:MySQL(4.0以前)
mysqli:MySQL(4.1以降)
pgsql:PostgreSQL
sqlite:SQLite
oci8:Oracle(7-9)
mssql:Microsoft SQL Server
odbc:ODBC
dbase:dBase
fbsql:FrontBase
ibase:InterBase
ifx:Informix
msql:Mini SQL
sybase:Sybase
上記のデータベースがPEAR::DBで対応可能です。
配列に必要な情報を入れた後にデータベースに接続します。
$db = DB::connect($dsn);
次にデータベースのテーブルを呼び出します。
testテーブルには、name(名前),age(年齢),pref(出身地)の三つが格納されていると仮定します。
$r = $db->query("SELECT * FROM test");
while($row = $r->fetchRow(DB_FETCHMODE_ASSOC)) {
echo "Name:".$row['name'];
echo "Age:".$row['age'];
echo "Pref:".$row['pref']."
\n";
}
以上が基本的な操作になります。
エラーの処理について
データベースに接続できなかった場合や、Query発行時にテーブル名の記述ミスがあっても基本的にエラー表示されません。
これらを表示させるようにするには、以下のように記述します。
$db = DB::connect($dsn);
if(DB::isError($db)) {
die("DB接続失敗:".$db->getMessage());
}
Query発行時にエラーが発生した場合も以下のように表示させます。
$r = $db->query("SELECT * FROM text");
if(DB::isError($r)) die("DB_Query_error:".$r->getMessage());
PEAR::DBを利用することで、データベースごとの機能を吸収することが出来ますがPEAR::DBだけでは吸収しきれないこともあります。
そのような局面では、以下のメソッドを使用して機能を確認できます。
if($db->provides("transactions")) {
$mes = "トランザクション機能をサポートしています。"."
\n";
}
今回はここまでの説明にします。
次回はもう少し高度な使い方を説明します。
