PEARでのDB接続(SELECT編)

とりあえずソース

<?php
require_once 'DB.php';
/*接続*/
$dsn='pgsql://name:pass@localhost/table';
$options=array('debug'=>2,'portability'=>DB_PORTABILITY_ALL,);

$db=&DB::connect($dsn, $options);
if(PEAR::isError($db))
{
die($db->getMessage());
}
/*ここまで*/

/*単純なSELECT処理*/
//クエリー発行
$res=&$db->query('SELECT * FROM postgis');
if (PEAR::isError($res))
{//ERROR?
die($res->getMessage());
}

//データ取り出し
while ($res->fetchInto($row,DB_FETCHMODE_ASSOC))
{//全要素に対して
print_r($row);
echo"<br>";
}
/*ここまで*/

//結果の開放
$res->free();

/*テーブルを目標にしたプロパティ要求*/
$res=&$db->query('SELECT * FROM postgis');
if (PEAR::isError($res))
{//ERROR?
die($res->getMessage());
}
//その1->行数の要求
echo $res->numRows()."<br>";
//その2->カラム数の要求
echo $res->numCols()."<br>";
//その3->更新、削除などで変更された行数の要求
echo $db->affectedRows()."<br>";
//その4->カラムの詳細情報の要求(連想配列)
print_r($res->tableInfo());
echo"<br>";
/*ここまで*/

//切断
$db->disconnect();
?>

こんな感じ
テストtableで実行した場合、プロパティ関係の結果は以下の通りに返された

行数=>17
カラム数=>2
変更行数=>0
table 詳細=>Array ( [0] => Array ( [table] => [name] => id [type] => int4 [len] => 4 [flags] => ) [1] => Array ( [table] => [name] => point [type] => geometry [len] => -1 [flags] => ) )

いい忘れたが、実行はPostgreSQLの8.2で実行した
flagsはPostgreSQL独自(なのか?)の項目だから、MySQL等ではレスポンスも変わる点に注意
なお、更新等のアクション要求した行数の習得は特に何もしていない場合0が返される。このアクションは別の動きが更新実行した場合には感知されない
アクションを起こすスクリプトにのみ適応される様子である