|
DB_common::getAssoc()
DB_common::getAssoc() – クエリを実行し、結果を配列として返す
Synopsis
array &getAssoc (
string $query
,
boolean $force_array
= = false
,
mixed $params = array()
,
integer $fetchmode =
= DB_FETCHMODE_DEFAULT
,
boolean $group
= = false
)
Description
指定したクエリを実行し、連想配列に結果セット全体を格納したあとで
結果セットを開放します。
結果セットにのカラム数が 2 つより多い場合は、2 番目のカラムから
最後のカラムまでの値の配列が、連想配列の値として返されます。
結果セットのカラム数が 2 つのみの場合は、2 番目のカラムの値を持つ
スカラ値が、連想配列の値として返されます
(パラメータ $force_array
で、強制的に
配列を返すようにしている場合を除きます)。
Parameter
-
string
$query
-
SQL クエリあるいはプリペアドステートメント。
-
boolean
$force_array
-
クエリが返すカラム数が 2 つの場合にのみ使用します。
TRUE を指定すると、返される結果がスカラではなく
要素がひとつの配列となります。
-
mixed
$params
-
プリペアドステートメントに追加される、配列・文字列あるいは数値のデータ。
配列の要素数は、クエリ内のプレースホルダの数と同じでなければなりません。
配列以外を指定した場合はプレースホルダがひとつであることを意味し、
配列を指定した場合は配列の個々の要素がそれぞれのパラメータに対応します。
指定された場合は、
prepare()/
execute() が使用されます。
-
integer
$fetchmode
-
使用するフェッチモード。
デフォルトは DB_FETCHMODE_DEFAULT で、
これは DB の現在のフェッチモードを使用します。
DB の現在のデフォルトフェッチモードを変更するには
setFetchMode() を使用します。
フェッチモードには、以下の値が指定できます。
-
DB_FETCHMODE_ORDERED
-
DB_FETCHMODE_ASSOC
-
DB_FETCHMODE_OBJECT
-
boolean
$group
-
TRUE の場合、返される連想配列の値がさらに別の配列の中に
組み込まれます。もし同一キー (最初のカラム) のデータが
繰り返し登場した場合は、その値が上書きされずに
配列に追記されていきます。
Return value
array - クエリ結果の連想配列、あるいは失敗した場合に
DB_Error オブジェクトを返します。
Throws
Possible PEAR_Error values
エラーコード |
エラーメッセージ |
原因 |
対応法 |
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 を使用しているなどが
考えられます。
|
Note
This function can not be called
statically.
Example
すべての例で、以下のデータセットを使用します。
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 つのカラムを持つ結果セット
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 ) ) )
2 つより多くのカラムを持つ結果セット
$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()); } ?>
|
|
|