/bonvhp/webapp/PEAR       [後へ]   [目次へ]   [次へ] ~ [] ~

PEAR:データベース接続: MDB2

SQL の INSERT や SELECT といった、
データベース制御文には、
データベースそのものを指定する箇所がありません。

まず、「データベースに接続する」という操作が必要です。

本稿の 分野別の解説:PostgreSQL では、
データベースの接続に PgAdmin を使用しました。

プログラムで接続するには、
いくつもの方法がありますが、
その中で、PEAR の MDB2 ライブラリを使用する方法を説明します。

1. MDB2 本体をリンク
  使用する PHP コードの先頭で、
  require_once("MDB2.php");

2. データベースに接続
  $db =& MDB2::connect($dsn, $options);
  
  connect の引数:
  $dsn: データベースの接続情報の配列
  たとえば、分野別の解説:PostgreSQL でのデータベースだと
    $dsn = array(
            'phptype'  => 'pgsql',      // 使用する RDB
            'username' => 'sql_sample', // ログインロールのユーザー
            'password' => 'sql_sample', // ログインロールのパスワード
            'hostspec' => 'localhost',  // RDB の居るサーバー名 (または、IP アドレス)
            'database' => 'sql_sample', // データベース名
        );
    $options = array(
            'debug'       => 2,
            'portability' => MDB2_PORTABILITY_ALL,
        );
        // 詳細は 
        // 
        // 

  正常にデータベースに接続できたか、下記のように確認します。
    if (PEAR::isError($db)) {
        die($db->getMessage());
    }

  正常にデータベースに接続できたら、
  $db に接続情報が格納されます。

3. デフォルトの設定
  接続したデータベースへのアクセス全般について、
  デフォルトになる設定をしておきます。

    $db->setFetchMode(MDB2_FETCHMODE_ASSOC);  // データを連想配列で返す
    $db->loadModule('Extended');              // 拡張関数(queryRow など) を使用する

  以後、この $db を使って、データベースにアクセスします。

4. SQL (クエリ) の実行
  具体的な SQL 文は、
    $data =& $db->getAll('SELECT * FROM person');
  のようにして使います。
  正常にデータが取れたか、下記のように確認します。

    if (PEAR::isError($data)) {
        die($data->getMessage());
    }
  
  正常にデータが取れれば、
  $data に結果が、連想配列で入ります。
  たとえば、
  array (
    0 =>
      array (
        'person_name' => 'user1',
        'person_password' => '12345',
        'person_id' => '1',
      ),
    // ..... データが続く
  );
  のようにです。

  データをデータベースに登録するときは、
    $res = $db->exec("INSERT INTO person (person_name, person_password) VALUES ('user5', '333')");
  などとします。

5. データベースを切断
  データベースのアクセスが終了したら、接続を切断します。
    $db->disconnect();

他にも、様々なメソッドなどが用意されているので、
詳細は、PEAR のマニュアルを参照してください。

/bonvhp/webapp/PEAR       [後へ]   [目次へ]   [次へ]