トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

PEAR_PHP

PEAR

PEARとは、PHPで使用できる便利ライブラリ群です。主に、DBのアクセスをMySQLに限定したくないときに使うことになりますほかにもいろいろできるみたいですが、DBアクセスでのPEAR使用を説明していきます。

PEARのインストール

PHPをインストールしたときにPEAR自身はインストールされていない状態です。PEARを有効にするには、PHPインストールディレクトリの「go-pear.bat」をDOSプロンプトにて実行してください。勝手に展開されて「PEAR/pear」ディレクトリに関連ファイルが展開されます。

上記作業が終了後、php.iniファイル内の「include_path」にPEARのパスが追加されているか確認してください。Smartyも動くようにしているとすると、以下のようになっています。

include_path=".;C:\Program Files\php-4.3.10-Win32\PEAR\pear;C:\Program Files\php-4.3.10-Win32\Smarty"

PEARを使用したDB接続

<?php
    require_once("DB.php");  // PEAR の DB クラスを参照

    $dbUser = "user1";
    $dbPass = "hoehoe";
    $dbHost = "localhost";
    $dbName = "testDB";
 
    $db = DB::connect("mysql://$dbUser:$dbPass@$dbHost/$dbName");
    if(DB::isError($db)) {
        print("db connect error!<br>");
        exit(0);
    }

    $result = $db->query("select * from testtbl");
    if($result) {
        while($row = $result->fetchRow()) {
            $cou = count($row);
            for($i = 0; $i < $cou; $i++) {
                print($row[$i]." ");
            }
            print("<br>\n");
        }
    }  
    $db->disconnect();
?>

「require_once("DB.php");」にて、PEARのデータベース接続クラスを参照できるようにします。

DB::connectでデータベースの接続を行います。はじめの「mysql」を変えることで他のDBにも拡張しやすいのが分かるかと思います。PEARを使わない場合、「mysql_connect」「mysql_select_db」関数などを使用していましたので簡略化されていて見やすいですね。

$db = DB::connect("mysql://$dbUser:$dbPass@$dbHost/$dbName");

$dbUserにデータベースにアクセスするユーザ名、$dbPassにパスワード、$dbHostにホスト名(サーバから見たときのローカルだと'localhost')、$dbNameに使用するデータベース名、を入れておきます。成功すると、$dbにデータベースにアクセスするためのオブジェクトが返されます。「DB::isError($db)」で接続が正常に行われていない状態を検出できます。

「$result = $db->query("select * from testtbl");」でテーブル「testtbl」のselectを行っています。「$row = $result->fetchRow()」にて1行分のレコード情報を取り出します。手順は、PEARを使用しないときと変わりませんね。

使い終わったら「$db->disconnect()」で接続を閉じます。

SQL文でのinsert/update/delete処理

select以外でも「$db->query」でデータベースを制御することができます。

$sql = "insert into testtbl set id=5,name='hoe'";
$db->query($sql);

$sql = "delete from testtbl where id=10";
$db->query($sql);

$sql = "update testtbl set name='hoe' where id=10";
$db->query($sql);

Future's Laboratory 技術格納庫 2004-2013 Yutaka Yoshisaka.