DB_common::setFetchMode()

DB_common::setFetchMode() -- デフォルトのフェッチモードを設定する

概要

void setFetchMode (integer $fetchmode [, string $object_class = stdClass])

説明

fetch*() および get*() メソッドで 使用される、デフォルトのフェッチモードを設定します。

パラメータ

integer $fetchmode

DB_FETCHMODE_ORDEREDDB_FETCHMODE_ASSOC あるいは DB_FETCHMODE_OBJECT

詳細な情報は、下の を参照ください。

string $object_class

$fetchmodeDB_FETCHMODE_OBJECT に設定されている場合に 使用されます。

このパラメータを DB_row に設定すると、 結果のデータを DB_row オブジェクトの新しいインスタンスに 格納することができます。

返り値

void - 成功した場合は何も返しません。 失敗した場合に DB_Error オブジェクトを返します。

例外・エラー

表 33-1PEAR_Error の値

エラーコードエラーメッセージ原因対応法
NULL invalid fetchmode mode 指定したフェッチモードが存在しないか、使用中のバージョンの DB では実装されていません。 引数の記述内容、および使用中の DB のバージョンを調べます。

注意

この関数は、スタティックにコールする ことはできません。

例 33-1 DB_FETCHMODE_ORDERED (デフォルト)

数値添字の配列が返されます。要素の並び順は、SELECT 文の内容によって 決まります。


<?php
// $db という名前の DB オブジェクトを取得しているとします...
$db->setFetchMode(DB_FETCHMODE_ORDERED);

$res =& $db->query('SELECT a, b FROM phptest WHERE a = 28');
$row =& $res->fetchRow();

print_r($row);
echo 'カラム a は ' . $row[0];
?>

出力は以下のようになります。

Array
(
    [0] => 28
    [1] => hi
)
カラム a は 28

例 33-2 DB_FETCHMODE_ASSOC

カラム名をキーとする連想配列が返されます。


<?php
// $db という名前の DB オブジェクトを取得しているとします...
$db->setFetchMode(DB_FETCHMODE_ASSOC);

$res =& $db->query('SELECT a, b FROM phptest WHERE a = 28');
$row =& $res->fetchRow();

print_r($row);
echo 'カラム a は ' . $row['a'];
?>

出力は以下のようになります。

Array
(
    [a] => 28
    [b] => hi
)
カラム a は 28

例 33-3 DB_FETCHMODE_OBJECT

カラム名をプロパティとして持つオブジェクトが返されます。


<?php
// $db という名前の DB オブジェクトを取得しているとします...
$db->setFetchMode(DB_FETCHMODE_OBJECT);

$res =& $db->query('SELECT a, b FROM phptest WHERE a = 28');
$row =& $res->fetchRow();

print_r($row);
echo 'カラム a は ' . $row->a;
?>

出力は以下のようになります。

stdClass Object
(
    [a] => 28
    [b] => hi
)
カラム a は 28

例 33-4 DB_FETCHMODE_OBJECT および DB_row

setFetchMode() のオプションのパラメータ $object_classDB_row に設定されている場合は、DB_row オブジェクトが返されます。


<?php
// $db という名前の DB オブジェクトを取得しているとします...
$db->setFetchMode(DB_FETCHMODE_OBJECT, 'DB_row');

$res =& $db->query('SELECT a, b FROM phptest WHERE a = 28');
$row =& $res->fetchRow();

print_r($row);
echo 'カラム a は ' . $row->a;
?>

出力は以下のようになります。

db_row Object
(
    [a] => 28
    [b] => hi
)
カラム a は 28

例 33-5 DB_FETCHMODE_OBJECT で独自のオブジェクトを使用する (PHP 4)


<?php
// $db という名前の DB オブジェクトを取得しているとします...

class SomeResult {
    function SomeResult($data) {
        foreach ($data as $key => $value) {
            $this->$key = $data[$key];
        }
    }
}

$db->setFetchMode(DB_FETCHMODE_OBJECT, 'SomeResult');

$res =& $db->query('SELECT a, b FROM phptest WHERE a = 28');
$row =& $res->fetchRow();

print_r($row);
echo 'カラム a は ' . $row->a;
?>

出力は以下のようになります。

SomeResult Object
(
    [a] => 28
    [b] => hi
)
カラム a は 28

例 33-6 DB_FETCHMODE_OBJECT で独自のオブジェクトを使用する (PHP 5)


<?php
// $db という名前の DB オブジェクトを取得しているとします...

class SomeResult {
    public $row_data;
    function __construct($data) {
        $this->row_data = $data;
    }
    function __get($variable) {
        return $this->row_data[$variable];
    }
}

$db->setFetchMode(DB_FETCHMODE_OBJECT, 'SomeResult');

$res =& $db->query('SELECT a, b FROM phptest WHERE a = 28');
$row =& $res->fetchRow();

print_r($row);
echo 'カラム a は ' . $row->a;
?>

出力は以下のようになります。

SomeResult Object
(
    [a] => 28
    [b] => hi
)
カラム a は 28