array &getAssoc (
string $query
,
boolean $force_array
= = false
,
mixed $params = array()
,
integer $fetchmode =
= DB_FETCHMODE_DEFAULT
,
boolean $group
= = false
)
指定したクエリを実行し、連想配列に結果セット全体を格納したあとで 結果セットを開放します。
結果セットにのカラム数が 2 つより多い場合は、2 番目のカラムから
最後のカラムまでの値の配列が、連想配列の値として返されます。
結果セットのカラム数が 2 つのみの場合は、2 番目のカラムの値を持つ
スカラ値が、連想配列の値として返されます
(パラメータ $force_array で、強制的に
配列を返すようにしている場合を除きます)。
$query
SQL クエリあるいはプリペアドステートメント。
$force_array
クエリが返すカラム数が 2 つの場合にのみ使用します。 TRUE を指定すると、返される結果がスカラではなく 要素がひとつの配列となります。
$params
プリペアドステートメントに追加される、配列・文字列あるいは数値のデータ。 配列の要素数は、クエリ内のプレースホルダの数と同じでなければなりません。 配列以外を指定した場合はプレースホルダがひとつであることを意味し、 配列を指定した場合は配列の個々の要素がそれぞれのパラメータに対応します。
指定された場合は、 prepare()/ execute() が使用されます。
$fetchmode
使用するフェッチモード。 デフォルトは DB_FETCHMODE_DEFAULT で、 これは DB の現在のフェッチモードを使用します。 DB の現在のデフォルトフェッチモードを変更するには setFetchMode() を使用します。 フェッチモードには、以下の値が指定できます。
DB_FETCHMODE_ORDERED
DB_FETCHMODE_ASSOC
DB_FETCHMODE_OBJECT
$group
TRUE の場合、返される連想配列の値がさらに別の配列の中に 組み込まれます。もし同一キー (最初のカラム) のデータが 繰り返し登場した場合は、その値が上書きされずに 配列に追記されていきます。
array - クエリ結果の連想配列、あるいは失敗した場合に DB_Error オブジェクトを返します。
| エラーコード | エラーメッセージ | 原因 | 対応法 |
|---|---|---|---|
| DB_ERROR_INVALID | invalid | 準備された SQL 文が無効です。 | プレースホルダを使用する SQL 文を用いる場合は prepare() のドキュメント を参照ください。 |
| DB_ERROR_MISMATCH | mismatch | パラメータの数が、プリペアドステートメント中の プレースホルダの数と一致しません。 |
$query に渡した
prepare() 済みの文中の
プレースホルダの数が、$params
で渡した項目の数と一致するかどうかを調べます。
|
| DB_ERROR_NODBSELECTED | no database selected | データベースが選択されていません。 | connect() の際の DSN を調べます。 |
| DB_ERROR_TRUNCATED | truncated | 結果セットのカラム数が 2 より少ないです。 | SQL クエリを調べ、必要なら別の get*() 関数を使用します。 |
| その他のエラーコード | データベース固有のエラー。 | PHP マニュアル のデータベース関連の部分を調べ、エラーの原因を判断してください。 たいていの場合は SQL 文が間違っていることが原因です。例えば Oracle データベースに対して SQL で LIMIT を使用しているなどが 考えられます。 |
This function can not be called statically.
すべての例で、以下のデータセットを使用します。
INSERT INTO foo VALUES ('Juan', 5, '1991-01-11 21:31:41');
INSERT INTO foo VALUES ('Kyu', 10, '1992-02-12 22:32:42');
INSERT INTO foo VALUES ('Kyu', 15, '1993-03-13 23:33:43');
2 つのカラムを持つ結果セットに対して
$force_array = FALSE (デフォルト)
で getAssoc() を使用する場合は、
$fetchmode を変更しても結果の配列の
形式には影響しません。
デフォルトモードでの getAssoc() の使用
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAssoc('SELECT cf, df FROM foo');
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?>
出力は、以下のようになります。
Array
(
[Juan] => 1991-01-11 21:31:41
[Kyu] => 1993-03-13 23:33:43
)
$group = TRUE での
getAssoc() の使用
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAssoc('SELECT cf, df FROM foo',
false, array(), DB_FETCHMODE_ORDERED, true);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?>
出力は、以下のようになります。
Array
(
[Juan] => Array
(
[0] => 1991-01-11 21:31:41
)
[Kyu] => Array
(
[0] => 1992-02-12 22:32:42
[1] => 1993-03-13 23:33:43
)
)
$force_array = TRUE
および $fetchmode =
DB_FETCHMODE_ORDERED での
getAssoc() の使用
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAssoc('SELECT cf, df FROM foo',
true, array(), DB_FETCHMODE_ORDERED);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?>
出力は、以下のようになります。
Array
(
[Juan] => Array
(
[0] => 1991-01-11 21:31:41
)
[Kyu] => Array
(
[0] => 1993-03-13 23:33:43
)
)
$force_array = TRUE
および $fetchmode =
DB_FETCHMODE_ASSOC での
getAssoc() の使用
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAssoc('SELECT cf, df FROM foo',
true, array(), DB_FETCHMODE_ASSOC);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?>
出力は、以下のようになります。
Array
(
[Juan] => Array
(
[df] => 1991-01-11 21:31:41
)
[Kyu] => Array
(
[df] => 1993-03-13 23:33:43
)
)
$force_array = TRUE
および $fetchmode =
DB_FETCHMODE_OBJECT での
getAssoc() の使用
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAssoc('SELECT cf, df FROM foo',
true, array(), DB_FETCHMODE_OBJECT);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?>
出力は、以下のようになります。
Array
(
[Juan] => stdClass Object
(
[cf] => Juan
[df] => 1991-01-11 21:31:41
)
[Kyu] => stdClass Object
(
[cf] => Kyu
[df] => 1993-03-13 23:33:43
)
)
$force_array = TRUE、
$fetchmode =
DB_FETCHMODE_ORDERED
および $group = TRUE での
getAssoc() の使用
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAssoc('SELECT cf, df FROM foo',
true, array(), DB_FETCHMODE_ORDERED, true);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?>
出力は、以下のようになります。
Array
(
[Juan] => Array
(
[0] => Array
(
[0] => 1991-01-11 21:31:41
)
)
[Kyu] => Array
(
[0] => Array
(
[0] => 1992-02-12 22:32:42
)
[1] => Array
(
[0] => 1993-03-13 23:33:43
)
)
)
$force_array = TRUE、
$fetchmode =
DB_FETCHMODE_ASSOC
および $group = TRUE での
getAssoc() の使用
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAssoc('SELECT cf, df FROM foo',
true, array(), DB_FETCHMODE_ASSOC, true);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?>
出力は、以下のようになります。
Array
(
[Juan] => Array
(
[0] => Array
(
[df] => 1991-01-11 21:31:41
)
)
[Kyu] => Array
(
[0] => Array
(
[df] => 1992-02-12 22:32:42
)
[1] => Array
(
[df] => 1993-03-13 23:33:43
)
)
)
$force_array = TRUE、
$fetchmode =
DB_FETCHMODE_OBJECT
および $group = TRUE での
getAssoc() の使用
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAssoc('SELECT cf, df FROM foo',
true, array(), DB_FETCHMODE_OBJECT, true);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?>
出力は、以下のようになります。
Array
(
[Juan] => Array
(
[0] => stdClass Object
(
[cf] => Juan
[df] => 1991-01-11 21:31:41
)
)
[Kyu] => Array
(
[0] => stdClass Object
(
[cf] => Kyu
[df] => 1992-02-12 22:32:42
)
[1] => stdClass Object
(
[cf] => Kyu
[df] => 1993-03-13 23:33:43
)
)
)
$fetchmode =
DB_FETCHMODE_ORDERED での
getAssoc() の使用
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAssoc('SELECT cf, nf, df FROM foo',
false, array(), DB_FETCHMODE_ORDERED);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?>
出力は、以下のようになります。
Array
(
[Juan] => Array
(
[0] => 5
[1] => 1991-01-11 21:31:41
)
[Kyu] => Array
(
[0] => 15
[1] => 1993-03-13 23:33:43
)
)
$fetchmode =
DB_FETCHMODE_ASSOC での
getAssoc() の使用
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAssoc('SELECT cf, nf, df FROM foo',
false, array(), DB_FETCHMODE_ASSOC);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?>
出力は、以下のようになります。
Array
(
[Juan] => Array
(
[nf] => 5
[df] => 1991-01-11 21:31:41
)
[Kyu] => Array
(
[nf] => 15
[df] => 1993-03-13 23:33:43
)
)
$fetchmode =
DB_FETCHMODE_OBJECT での
getAssoc() の使用
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAssoc('SELECT cf, nf, df FROM foo',
false, array(), DB_FETCHMODE_OBJECT);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?>
出力は、以下のようになります。
Array
(
[Juan] => stdClass Object
(
[cf] => Juan
[nf] => 5
[df] => 1991-01-11 21:31:41
)
[Kyu] => stdClass Object
(
[cf] => Kyu
[nf] => 15
[df] => 1993-03-13 23:33:43
)
)
$fetchmode =
DB_FETCHMODE_ORDERED
および $group = TRUE での
getAssoc() の使用
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAssoc('SELECT cf, nf, df FROM foo',
false, array(), DB_FETCHMODE_ORDERED, true);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?>
出力は、以下のようになります。
Array
(
[Juan] => Array
(
[0] => Array
(
[0] => 5
[1] => 1991-01-11 21:31:41
)
)
[Kyu] => Array
(
[0] => Array
(
[0] => 10
[1] => 1992-02-12 22:32:42
)
[1] => Array
(
[0] => 15
[1] => 1993-03-13 23:33:43
)
)
)
$fetchmode =
DB_FETCHMODE_ASSOC
および $group = TRUE での
getAssoc() の使用
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAssoc('SELECT cf, nf, df FROM foo',
false, array(), DB_FETCHMODE_ASSOC, true);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?>
出力は、以下のようになります。
Array
(
[Juan] => Array
(
[0] => Array
(
[nf] => 5
[df] => 1991-01-11 21:31:41
)
)
[Kyu] => Array
(
[0] => Array
(
[nf] => 10
[df] => 1992-02-12 22:32:42
)
[1] => Array
(
[nf] => 15
[df] => 1993-03-13 23:33:43
)
)
)
$fetchmode =
DB_FETCHMODE_OBJECT
および $group = TRUE での
getAssoc() の使用
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAssoc('SELECT cf, nf, df FROM foo',
false, array(), DB_FETCHMODE_OBJECT, true);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?>
出力は、以下のようになります。
Array
(
[Juan] => Array
(
[0] => stdClass Object
(
[cf] => Juan
[nf] => 5
[df] => 1991-01-11 21:31:41
)
)
[Kyu] => Array
(
[0] => stdClass Object
(
[cf] => Kyu
[nf] => 10
[df] => 1992-02-12 22:32:42
)
[1] => stdClass Object
(
[cf] => Kyu
[nf] => 15
[df] => 1993-03-13 23:33:43
)
)
)
ひとつのプレースホルダでの getAssoc() の使用法
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAssoc('SELECT cf, df FROM foo WHERE nf = ?',
false, 5);
if (PEAR::isError($data)) {
die($data->getMessage());
}
?>
ふたつのプレースホルダでの getAssoc() の使用法
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAssoc('SELECT cf, df FROM foo WHERE nf IN (?, ?)',
false, array(5, 10));
if (PEAR::isError($data)) {
die($data->getMessage());
}
?>