PDO::FETCH_CLASS 利用クラス指定

PHP::PECL

FETCH_CLASSは他のFETCHパラメータと利用場所が異なる。
動きとしてはPDO::FETCH_OBJと似ている。

利用できるメソッド

PDOクラス
query
PDOStatementクラス
fetch,setFetchMode

組み合わせ可能なFETCHパラメータ

PDO::FETCH_CLASSTYPE
PDO::FETCH_GROUP

単独使用サンプルコード

   $sql = <<<SQL
       SELECT * FROM user_table 
SQL;
   $stmtObj = $dbObj->query( $sql, PDO::FETCH_CLASS, 'testClass', array( 0 => 1234, 1 => 'test' )  );
   while ( $rowObjs = $stmtObj->fetchAll() )
   print_r( $rowObjs );

class testClass
{
   private $int;
   private $str;
   protected function testClass( $int = 0, $str = 1 )
   {
       $this->int = $int;
       $this->str = $str;
   }
}

結果

Array
(
   [0] => testClass Object
       (
           [int:private] => 1234
           [str:private] => test
           [users_id] => 1
           [users_name] => TARO
           [users_email] => taro@matrix.jp
       )

   [1] => testClass Object
       (
           [int:private] => 1234
           [str:private] => test
           [users_id] => 2
           [users_name] => JIRO
           [users_email] => jiro@matrix.jp
       )
・・・

FETCH_CLASSは単独で使用することはできない。
必ず使用するクラスを指定する必要がある。
構文は

method( PDO::FETCH_CLASS, '(ユーザー定義クラス名)' [, (コンストラクタの引数)] );

だ。
setFetchClass?, queryで指定が可能。
また、fetchObjectで指定することも出来る。
下記コードは全部同じである
queryメソッドで指定

   $stmtObj = $dbObj->query( $sql, PDO::FETCH_CLASS, 'testClass', array( 0 => 1234, 1 => 'test' ) );

setFetchMode?メソッドで指定

   $stmtObj = $dbObj->query( $sql );
   $stmtObj->setFetchMode( PDO::FETCH_CLASS, 'testClass', array( 0 => 1234, 1 => 'test' ) );

fetchObjectメソッドで指定

   $stmtObj = $dbObj->query( $sql );
   while ( $rowObj = $stmtObj->fetchObject( 'testClass', array( 0 => 1234, 1 => 'test' )) )
       $rowObjs[] = $rowObj;

お名前:


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Third Project
証券会社ランキング比較