DB_common::getAll() -- クエリを実行し、すべてのデータを配列として返す
説明
指定したクエリを実行し、入れ子になった配列に結果セット全体を格納したあとで
結果セットを開放します。
パラメータ
- string
$query
SQL クエリあるいはプリペアドステートメント。
- array
$params
プリペアドステートメントの実行時に使用される配列。
配列の要素数は、クエリ内のプレースホルダの数と同じでなければなりません。
指定された場合は、
prepare()/
execute() が使用されます。
警告 |
このメソッドでは、この引数にスカラー値を指定することはできません。
|
- integer
$fetchmode
使用するフェッチモード。
デフォルトは DB_FETCHMODE_DEFAULT で、
これは DB の現在のフェッチモードを使用します。
DB の現在のデフォルトフェッチモードを変更するには
setFetchMode() を使用します。
フェッチモードには、以下の値が指定できます。
返り値
array - 入れ子になった配列、あるいは失敗した場合に
DB_Error を返します。
例外・エラー
表 39-1PEAR_Error の値
エラーコード | エラーメッセージ | 原因 | 対応法 |
---|
DB_ERROR_INVALID |
invalid
|
準備された SQL 文が無効です。
|
プレースホルダを使用する SQL 文を用いる場合は
prepare() のドキュメント
を参照ください。
|
DB_ERROR_MISMATCH |
mismatch
|
パラメータの数が、プリペアドステートメント中の
プレースホルダの数と一致しません。
|
$query に渡した
prepare() 済みの文中の
プレースホルダの数が、$params
で渡した項目の数と一致するかどうかを調べます。
|
DB_ERROR_NODBSELECTED |
no database selected
|
データベースが選択されていません。
|
connect() の際の
DSN
を調べます。
|
その他のエラーコード | |
データベース固有のエラー。
|
PHP マニュアル
のデータベース関連の部分を調べ、エラーの原因を判断してください。
たいていの場合は SQL 文が間違っていることが原因です。例えば
Oracle データベースに対して SQL で LIMIT を使用しているなどが
考えられます。
|
注意
この関数は、スタティックにコールする
ことはできません。
例
例 39-1
最初にデフォルトのフェッチモードを設定し、連想配列を返すための
getAll() の使用法
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$db->setFetchMode(DB_FETCHMODE_ASSOC);
$data =& $db->getAll('SELECT cf, nf, df FROM foo');
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?> |
出力は、以下のようになります。
Array
(
[0] => Array
(
[cf] => Juan
[nf] => 5
[df] => 1991-01-11 21:31:41
)
[1] => Array
(
[cf] => Kyu
[nf] => 10
[df] => 1992-02-12 22:32:42
)
) |
|
例 39-2
数値添字の配列を返す getAll() の使用法
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAll('SELECT cf, nf, df FROM foo',
array(), DB_FETCHMODE_ORDERED);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?> |
出力は、以下のようになります。
Array
(
[0] => Array
(
[0] => Juan
[1] => 5
[2] => 1991-01-11 21:31:41
)
[1] => Array
(
[0] => Kyu
[1] => 10
[2] => 1992-02-12 22:32:42
)
) |
|
例 39-3
入れ子になった数値添字配列を返す
getAll() の使用法
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAll('SELECT cf, nf, df FROM foo',
array(), DB_FETCHMODE_ORDERED | DB_FETCHMODE_FLIPPED);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?> |
出力は、以下のようになります。
Array
(
[0] => Array
(
[0] => Juan
[1] => Kyu
)
[1] => Array
(
[0] => 5
[1] => 10
)
[2] => Array
(
[0] => 1991-01-11 21:31:41
[1] => 1992-02-12 22:32:42
)
) |
|
例 39-4
連想配列を返す getAll() の使用法
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAll('SELECT cf, nf, df FROM foo',
array(), DB_FETCHMODE_ASSOC);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?> |
出力は、以下のようになります。
Array
(
[0] => Array
(
[cf] => Juan
[nf] => 5
[df] => 1991-01-11 21:31:41
)
[1] => Array
(
[cf] => Kyu
[nf] => 10
[df] => 1992-02-12 22:32:42
)
) |
|
例 39-5
入れ子になった連想配列を返す
getAll() の使用法
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAll('SELECT cf, nf, df FROM foo',
array(), DB_FETCHMODE_ASSOC | DB_FETCHMODE_FLIPPED);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?> |
出力は、以下のようになります。
Array
(
[cf] => Array
(
[0] => Juan
[1] => Kyu
)
[nf] => Array
(
[0] => 5
[1] => 10
)
[df] => Array
(
[0] => 1991-01-11 21:31:41
[1] => 1992-02-12 22:32:42
)
) |
|
例 39-6
オブジェクトの配列を返す getAll() の使用法
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAll('SELECT cf, nf, df FROM foo',
array(), DB_FETCHMODE_OBJECT);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?> |
出力は、以下のようになります。
Array
(
[0] => stdClass Object
(
[cf] => Juan
[nf] => 5
[df] => 1991-01-11 21:31:41
)
[1] => stdClass Object
(
[cf] => Kyu
[nf] => 10
[df] => 1992-02-12 22:32:42
)
) |
|
例 39-7
prepare/execute モードで連想配列を返すための
getAll() の使用法
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAll('SELECT cf, nf, df FROM foo WHERE nf = ?',
array(5), DB_FETCHMODE_ASSOC);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?> |
出力は、以下のようになります。
Array
(
[0] => Array
(
[cf] => Juan
[nf] => 5
[df] => 1991-01-11 21:31:41
)
) |
|