PEAR MDB2パッケージ

MDBパッケージを入手するには、WindowsでもUNIXでも、次のように打てばOKです。

pear install MDB2
pear install MDB2_driver_mysql

上記のように、各RDBMS別に"Driver"とゆーものを個別にインストールする必要があります。

<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=Shift_JIS"></meta>
<title>PEAR MDB2 MySQL 検索サンプル</title>
<style type="text/css">
span.message {
    color: #c00000;
}
</style>
</head>
<body>

<?php
require_once 'MDB2.php';

function executeQuery($shitenCode) {
    $dsn = "mysql://urano:urano398@localhost/udb";
    $con =& MDB2::factory($dsn);

    if(MDB2::isError($con)){
        print "Error!! " . $con->getMessage() . "<br/>\n";;
        print 'Standard Code: ' . $con->getCode() . "<br/>\n";
        // 以下の2つは接続に関する情報が表示されることがあるので注意。
        // (本番環境では表示しない)
        print 'UserInfo Message: '  . $con->getUserInfo()  . "<br/>\n";
        print 'DebugInfo Message: ' . $con->getDebugInfo() . "<br/>\n";
        $rset = array();
        return;
    }

    // 応答の日本語文字コードを指定するMySQL特有のTips
    // シフトJISならsjis、EUC-JPならujisと指定します。
    $con->query("SET NAMES sjis");

    $sql = <<<SQL
SELECT SHITEN_CODE, SHITEN_NAME, AREA_CODE, ADDRESS, EMPLOYEE_NUM
  FROM SHITEN
 WHERE SHITEN_CODE = ?
 ORDER BY SHITEN_CODE
SQL;
    $st = $con->prepare($sql);
    $result = $st->execute($shitenCode);
    if($con->isError($result)){
        die("Error!! " . $result->getMessage());
    }
    $rset = $result->fetchAll();
    $st->free();
    $con->disconnect();
    return $rset;
}

function displayTable($rset){
    print <<<HEADER
<style type="text/css">
table {
    border: 2px solid #000000;
    border-collapse: collapse;
}
table tr th {
    border: 1px solid #000000; padding: 2px;
    background-color: #cccccc;
}
table tr td {
    border: 1px solid #000000; padding: 2px;
}
</style>
<table><tr>
<th>支店コード</th><th>支店名称</th><th>地域</th><th>所在地</th><th>従業員数</th>
</tr>
HEADER;
    foreach($rset as $row){
        print "<tr>";
        foreach($row as $e){
            print "<td>$e</td>";
        }
        print "</tr>\n";
    }
    print "</table>\n";
}
?>

<form action="<?= $_SERVER['PHP_SELF'] ?>" method="POST">
支店コード
<input type="text" name="shiten_code" maxlength="5" value="<?= $_POST['shiten_code'] ?>">
<input type="submit" value="OK!">
</form>

<?php
if(isset($_POST['shiten_code'])){
    $shitenCode = htmlspecialchars($_POST['shiten_code']);
    $rset = executeQuery($shitenCode);
    if(empty($rset)){
        print "<span class='message'>該当データがありませんでした。</span><br/>";
    } else {
        displayTable($rset);
    }
}
?>
</body>
</html>

DBとMDB2の使い方はほぼ同じですが、幾つか微妙な違いがあります。 まず、DB::connect() に対応するのは MDB2::factory() です。
またSQLを簡単に発行するDB::Connectionのメソッド getAll、getOne、getRow、getColは、それぞれMDB2では queryAll、queryOne、queryRow、queryColと改名されています。

Open Source Web Architecture Top

(first uploaded 2003/11/14 last updated 2007/07/21, URANO398)

Gポイントポイ活 Amazon Yahoo 楽天

無料ホームページ 楽天モバイル[UNLIMITが今なら1円] 海外格安航空券 海外旅行保険が無料!