DB_common::setFetchMode()
DB_common::setFetchMode() – デフォルトのフェッチモードを設定する
Synopsis
void setFetchMode (
integer $fetchmode
,
string $object_class = stdClass
)
Description
fetch*() および get*() メソッドで
使用される、デフォルトのフェッチモードを設定します。
Parameter
-
integer
$fetchmode
-
DB_FETCHMODE_ORDERED、
DB_FETCHMODE_ASSOC あるいは
DB_FETCHMODE_OBJECT。
詳細な情報は、下の
例 を参照ください。
-
string
$object_class
-
$fetchmode
が
DB_FETCHMODE_OBJECT に設定されている場合に
使用されます。
このパラメータを DB_row に設定すると、
結果のデータを DB_row オブジェクトの新しいインスタンスに
格納することができます。
Return value
void - 成功した場合は何も返しません。
失敗した場合に DB_Error オブジェクトを返します。
Throws
Possible PEAR_Error values
エラーコード |
エラーメッセージ |
原因 |
対応法 |
NULL |
invalid fetchmode mode
|
指定したフェッチモードが存在しないか、使用中のバージョンの
DB では実装されていません。
|
引数の記述内容、および使用中の DB のバージョンを調べます。
|
Note
This function can not be called
statically.
Example
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
カラム名をキーとする連想配列が返されます。
<?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
カラム名をプロパティとして持つオブジェクトが返されます。
<?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
DB_FETCHMODE_OBJECT および DB_row
setFetchMode() のオプションのパラメータ
$object_class
が
DB_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
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
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