PDOStatement :: fetchAllの
PDOStatement :: fetchAllの - 結果セット内のすべての行の配列を返します(PHP 5> = 5.1.0、PECLのpdo> = 0.1.0)
説明
文法
array PDOStatement::fetchAll ([ int $fetch_style [, mixed $fetch_argument [, array $ctor_args = array() ]]] )
パラメータ
fetch_style
どのように次の行を制御するためには、呼び出し元に返されます。 この値は、PDO ::シリーズのFETCH_ *定数、PDO :: ATTR_DEFAULT_FETCH_MODE(デフォルトPDO :: FETCH_BOTH)のデフォルト値でなければなりません。
単一列のすべての値の配列を含む結果セットを返すには、PDO :: FETCH_COLUMNを指定する必要があります。 コラム-indexパラメータを指定することにより、所望の列を取得します。
1列に一意の値の結果セットを取得したい、あなたはPDOする必要があります:: FETCH_COLUMNとPDO :: FETCH_UNIQUEビット単位またはを。
グループ化された連想配列の指定された値に基づいて列を返すために、我々は:: FETCH_COLUMNとPDO :: FETCH_GROUPビット単位またはをPDOする必要があります。
fetch_argument
このパラメータの値に基づいてFetch_styleパラメータは異なる意味を持っています。
PDO::FETCH_COLUMN
:ゼロ索引列に戻ります。PDO::FETCH_CLASS
:、クラス属性名に対応する各列のマッピング列を指定されたクラスのインスタンスを返します。PDO::FETCH_FUNC
:指定された関数の引数として、各行の列、および関数を呼び出した後、結果を返します。
ctor_args
fetch_styleパラメータがPDOとき:: FETCH_CLASS、クラスのコンストラクタのパラメータの定義以来。
戻り値
PDOStatement :: fetchAllの()は、残りのすべての行の配列を含む結果セットを返します。 この配列の各行は、アレイまたは列の値、または各列の名前に対応するオブジェクトの属性です。
システムの負担が発生します大量の結果セットを取得するには、この方法を使用し、ネットワークリソースの多くを取ることがあります。 データおよび操作するためのその使用PHPのすべてを取得し、結果セットに対処するためのデータベース・サービスの利用を検討する方が良いだろう。 例えば、前およびおよびSQLのORDER BY句で結果を定義するには、PHPのプロセスを介してデータを取得します。
例
結果セットに残っている全ての行を取得します。
<?php $sth = $dbh->prepare("SELECT name, colour FROM fruit"); $sth->execute(); /* 获取结果集中所有剩余的行 */ print("Fetch all of the remaining rows in the result set:\n"); $result = $sth->fetchAll(); print_r($result); ?>
上の例の出力は次のようになります。
Fetch all of the remaining rows in the result set: Array ( [0] => Array ( [NAME] => pear [0] => pear [COLOUR] => green [1] => green ) [1] => Array ( [NAME] => watermelon [0] => watermelon [COLOUR] => pink [1] => pink ) )
単一の結果は、すべての値を設定されています
次の例では、SQL文自体が行ごとに複数の列を返す場合でも、結果は別のリターン・すべての値を集中する方法を示しています。
<?php $sth = $dbh->prepare("SELECT name, colour FROM fruit"); $sth->execute(); /* 获取第一列所有值 */ $result = $sth->fetchAll(PDO::FETCH_COLUMN, 0); var_dump($result); ?>
上の例の出力は次のようになります。
Array(3) ( [0] => string(5) => apple [1] => string(4) => pear [2] => string(10) => watermelon )
別々のグループによると、すべての値
次の例では、パケットの結果に基づいて、連想配列集中指定されたカラムの値を返す方法を示しています。 アレイは、3つのキーが含まれています:スイカ返された配列が一つだけ色が含まれていながら、リンゴと梨返される配列は、2つの異なる色が含まれています。
<?php $insert = $dbh->prepare("INSERT INTO fruit(name, colour) VALUES (?, ?)"); $insert->execute(array('apple', 'green')); $insert->execute(array('pear', 'yellow')); $sth = $dbh->prepare("SELECT name, colour FROM fruit"); $sth->execute(); /* 根据第一列分组 */ var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP)); ?>
上の例の出力は次のようになります。
array(3) { ["apple"]=> array(2) { [0]=> string(5) "green" [1]=> string(3) "red" } ["pear"]=> array(2) { [0]=> string(5) "green" [1]=> string(6) "yellow" } ["watermelon"]=> array(1) { [0]=> string(5) "green" } }
結果の各行は、クラスをインスタンス化
以下列子は、PDO :: FETCH_CLASSはスタイルの動作を取得します示しています。
<?php class fruit { public $name; public $colour; } $sth = $dbh->prepare("SELECT name, colour FROM fruit"); $sth->execute(); $result = $sth->fetchAll(PDO::FETCH_CLASS, "fruit"); var_dump($result); ?>
上の例の出力は次のようになります。
array(3) { [0]=> object(fruit)#1 (2) { ["name"]=> string(5) "apple" ["colour"]=> string(5) "green" } [1]=> object(fruit)#2 (2) { ["name"]=> string(4) "pear" ["colour"]=> string(6) "yellow" } [2]=> object(fruit)#3 (2) { ["name"]=> string(10) "watermelon" ["colour"]=> string(4) "pink" } }
各行には、関数を呼び出します
以下列子は、PDO :: FETCH_FUNCはスタイルの動作を取得します示しています。
<?php function fruit($name, $colour) { return "{$name}: {$colour}"; } $sth = $dbh->prepare("SELECT name, colour FROM fruit"); $sth->execute(); $result = $sth->fetchAll(PDO::FETCH_FUNC, "fruit"); var_dump($result); ?>
上の例の出力は次のようになります。
array(3) { [0]=> string(12) "apple: green" [1]=> string(12) "pear: yellow" [2]=> string(16) "watermelon: pink" }