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_ORDEREDtrue);

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_ORDEREDtrue);

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_ASSOCtrue);

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_OBJECTtrue);

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_ORDEREDtrue);

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_ASSOCtrue);

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_OBJECTtrue);

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 = ?',
        
false5);

if (
PEAR::isError($data)) {
    die(
$data->getMessage());
}
?>

ふたつのプレースホルダでの getAssoc() の使用法

<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getAssoc('SELECT cf, df FROM foo WHERE nf IN (?, ?)',
        
false, array(510));

if (
PEAR::isError($data)) {
    die(
$data->getMessage());
}
?>
クエリを実行し、すべてのデータを配列として返す (Previous) クエリを実行し、ひとつのカラムのデータを返す (Next)
Last updated: Fri, 22 Aug 2014 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

There are no user contributed notes for this page.