さようなら、DB_DataObject。こんにちはPDO
PDO に切り替えた。
PDOの使い方は、java.sqlのパッケージによく似ている。
PDOはプリペアードステートメントを前提に高速処理をするようだ。今のところ使わないけど。
PODの使い方。<br />
postgreSQLでネイティブドライバと比較しながら観てみる
ネイティブドライバ
<?php
$sql = "SELECT * FROM users;";
$dsn = "hoge"
$con = pg_connect( $dsn );
$res = pg_query( $con, $sql );
while( $obj = pg_fetch_object( $res ) ){
$array[] = $obj;
}
pg_free_result( $res );
pg_close( $con );
?>
この結果は
<?php
array[0] = object(stdClass) {
"name":public => "foo";
"tel" :public => "00xx11xx";
}
array[1] = object(stdClass) {
"name":public => "foo";
"tel" :public => "00xx11xx";
}
?>
こんな感じ。pg_fetch_objectすれば、JOINの結果もObjectで返ってくる。<br />
PDOで書くと。
<?php
$sql = "SELECT * FROM users;";
$dsn = "hoge"
$pdo = new PDO( $dsn );
$stmt = $pdo->query( $sql );
$favorites = array();
while( ( $obj = $stmt->fetchObject() ) ){
$array[] = $obj;
}
?>
個人的には、arrayで取り出すより、Objectにする方が好き。Objectだと参照渡しだし。クラス指定できるし。
DB_DATAOBJECTの利点はCreateTableのクラス自動生成と自動生成とJoinのSQL自動生成なんだけど。。複雑じゃなかったら自作した方が早いね。
pdoStatement::fetchObject使えばベースになるOBJECTはすぐ取り出せるわけだし。