1 つ以上の結果セットを戻すステートメントを実行した後、PDO API で使用可能ないずれかのメソッドを使って、戻された行を繰り返して取り出します。 PDO API には、結果セット内の 1 つ以上の行から 1 つの列をフェッチするメソッドも含まれています。
始める前に
関連する 1 つ以上の結果セットを持つ PDO::query または PDOStatement::execute メソッドのいずれかによって戻されるステートメント・リソースが必要です。
手順
結果セットからデータをフェッチするには、次のようにします。
- いずれかのフェッチ・メソッドを呼び出すことにより、結果セットからデータをフェッチします。
- 結果セットから単一の行を配列またはオブジェクトとして戻すには、PDOStatement::fetch メソッドを呼び出します。
- 結果セットからすべての行を配列の配列またはオブジェクトの配列として戻すには、PDOStatement::fetchAll メソッドを呼び出します。
デフォルトで、PDO は各行を、列名と行内の列位置によって 0 から順に番号付けされた配列として戻します。 異なる様式で戻すよう要求するには、PDOStatement::fetch メソッドの呼び出し時にいずれかの PDO::FETCH_* 定数を最初のパラメーターとして指定します。
- PDO::FETCH_ASSOC
- 結果セット内に戻される際の列名によって索引付けされた配列を戻します。
- PDO::FETCH_BOTH (デフォルト)
- 結果セット内に戻される際の列名と 0 から順に番号付けされた列番号の両方によって索引付けされた配列を戻します。
- PDO::FETCH_BOUND
- TRUE を戻し、結果セット内の列の値を、PDOStatement::bindParam メソッドによってバインドされた PHP 変数に設定します。
- PDO::FETCH_CLASS
- 要求されたクラスの新規インスタンスを戻し、結果セットの列をそのクラスの名前付きプロパティーにマップします。
- PDO::FETCH_INTO
- 要求されたクラスの既存のインスタンスを更新し、結果セットの列をそのクラスの名前付きプロパティーにマップします。
- PDO::FETCH_LAZY
- PDO::FETCH_BOTH と PDO::FETCH_OBJ を結合し、アクセス時のオブジェクト変数名を作成します。
- PDO::FETCH_NUM
- 結果セット内に戻される際の列番号 (列 0 から始まる) によって順に番号付けされた配列を戻します。
- PDO::FETCH_OBJ
- 結果セット内に戻される列名に対応するプロパティー名を有する無名オブジェクトを戻します。
PDO::query または
PDOStatement::execute メソッドの呼び出し時に両方向スクロール・カーソルを要求した場合は、どの行が呼び出し元に戻されるかを制御するリストされたオプション・パラメーターを渡すことができます。
- フェッチ要求のフェッチ・オリエンテーションを表す、いずれかの PDO::FETCH_ORI_* 定数:
- PDO::FETCH_ORI_NEXT (デフォルト)
- 結果セット内の次の行をフェッチします。
- PDO::FETCH_ORI_PRIOR
- 結果セット内の直前の行をフェッチします。
- PDO::FETCH_ORI_FIRST
- 結果セット内の最初の行をフェッチします。
- PDO::FETCH_ORI_LAST
- 結果セット内の最後の行をフェッチします。
- PDO::FETCH_ORI_ABS
- 結果セット内の絶対行をフェッチします。 PDOStatement::fetch メソッドの 3 番目の引数として正の整数が必要です。
- PDO::FETCH_ORI_REL
- 結果セット内の相対行をフェッチします。 PDOStatement::fetch メソッドの 3 番目の引数として正または負の整数が必要です。
- 結果セット内の絶対または相対行を要求する整数。PDOStatement::fetch メソッドの 2 番目の引数で要求されたフェッチ・オリエンテーションに対応します。
- オプション: リストされたメソッドのいずれかを呼び出すことにより、結果セット内の 1 つ以上の行から 1 つの列をフェッチします。
- 結果セット内の単一行から単一列を戻すには、次のようにしてください。
取り出す列をメソッドの最初の引数で指定して、PDOStatement::fetchColumn メソッドを呼び出します。 列の番号は 0 で始まります。列を指定しない場合、PDOStatement::fetchColumn は行の中の最初の列を戻します。
- 結果セット内にある残りの行のすべてから単一の列を含む配列を戻すには、次のようにしてください。
PDOStatement::fetchAll メソッドを呼び出します。
その際、PDO::FETCH_COLUMN 定数を最初の引数として、検索対象の列を 2 番目の引数として渡します。 列の番号は 0 で始まります。
列を指定しない場合、PDOStatement::fetchAll(PDO::FETCH_COLUMN) 呼び出しによって行の中の最初の列が戻されます。
PDO API について詳しくは、http://php.net/manual/en/book.pdo.phpを参照してください。
例
列番号によって索引付けされた配列を戻します。
$stmt = $conn->query("SELECT firstnme, lastname FROM employee");
while ($row = $stmt->fetch(PDO::FETCH_NUM)) {
print "Name: <p>{$row[0] $row[1]}</p>";
}
次のタスク
データベースへの接続を閉じてもよい状態になったら、PDO オブジェクトを NULL に設定します。 PHP スクリプトの完了時に接続が自動的に閉じられます。