PDOStatement->fetch()
PDOStatement->fetch() — 結果セットから次の行を取得する
説明
class PDOStatement {mixed fetch ( [int fetch_style [, int cursor_orientation [, int cursor_offset]]] )
} PDOStatementオブジェクトに関連付けられた結果セットから1行取得します。 fetch_style パラメータは、PDO がその行をどの様に返すかを決定します。
パラメータ
- fetch_style
 - 
       次のレコードを呼び出し元に返す方法を制御します。
       この値は、PDO::FETCH_* 定数のどれかで、
       PDO::FETCH_BOTHがデフォルトです。
       
- 
         PDO::FETCH_ASSOC: は、結果セットに
         返された際のカラム名で添字を付けた配列を返します。
        
 - 
         PDO::FETCH_BOTH (デフォルト):
         結果セットに返された際のカラム名と
         0 で始まるカラム番号で添字を付けた配列を返します。
         
 - 
         PDO::FETCH_BOUND:
         TRUE を返し、結果セットのカラムの値を
         PDOStatement->bindParam()メソッドで
         バインドされたPHP変数に代入します。
        
 - 
         PDO::FETCH_CLASS:
         結果セットのカラムがクラス内の名前付けされたプロパティに
         マッピングされている、要求されたクラスの新規インスタンスを返します。
         fetch_style に PDO::FETCH_CLASSTYPE が
         含まれている場合 (例: PDO::FETCH_CLASS |
         PDO::FETCH_CLASSTYPE) は、最初のカラムの値から
         クラス名を決定します。
        
 - 
         PDO::FETCH_INTO:
         結果セットのカラムがクラス内の名前付けされたプロパティに
         マッピングされている要求された既存インスタンスを更新します。
        
 - 
         PDO::FETCH_LAZY:
         PDO::FETCH_BOTH とPDO::FETCH_OBJの
         組合せで、オブジェクト変数名を作成します。
        
 - 
         PDO::FETCH_NUM:
         結果セットに返された際の 0
         から始まるカラム番号を添字とする配列を返します。
        
 - 
         PDO::FETCH_OBJ:
         結果セットに返された際のカラム名と同名のプロパティを有する
         匿名のオブジェクトを返します。
        
 
 - 
         PDO::FETCH_ASSOC: は、結果セットに
         返された際のカラム名で添字を付けた配列を返します。
        
 - cursor_orientation
 - 
       スクロール可能なカーソルを表す PDOStatement オブジェクトの場合、
       この値により呼び出し側に返される行を定義します。
       この値は、PDO::FETCH_ORI_* 定数のどれかと
       する必要があり、
       PDO::FETCH_ORI_NEXT がデフォルトとなっています。
       PDOStatement に対してスクロール可能なカーソルを要求するためには、
       PDO->prepare() を用いて SQL ステートメントを
       準備する際、
       PDO::CURSOR_SCROLL に
       PDO::ATTR_CURSOR 属性を設定する必要があります。
      
 - offset
 -  
       スクロール可能なカーソルを表すPDOStatementオブジェクトの場合で、
       cursor_orientationパラメータが
       PDO::FETCH_ORI_ABSに設定された場合、この値により
       取得される結果セットの行の絶対位置が指定されます。
      
スクロール可能なカーソルを表すPDOStatementオブジェクトの場合で、 cursor_orientationパラメータが PDO::FETCH_ORI_RELに設定された場合、この値は、 PDOStatement->fetch() がコールされる前のカーソルの 位置を基準として取得する行の位置を指定します。 
例
例 1678. 異なる取得方法で行を取得する
<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
/* Exercise PDOStatement::fetch styles */
print("PDO::FETCH_ASSOC: ");
print("Return next row as an array indexed by column name\n");
$result = $sth->fetch(PDO::FETCH_ASSOC);
print_r($result);
print("\n");
print("PDO::FETCH_BOTH: ");
print("Return next row as an array indexed by both column name and number\n");
$result = $sth->fetch(PDO::FETCH_BOTH);
print_r($result);
print("\n");
print("PDO::FETCH_LAZY: ");
print("Return next row as an anonymous object with column names as properties\n");
$result = $sth->fetch(PDO::FETCH_LAZY);
print_r($result);
print("\n");
print("PDO::FETCH_OBJ: ");
print("Return next row as an anonymous object with column names as properties\n");
$result = $sth->fetch(PDO::FETCH_OBJ);
print $result->NAME;
print("\n");
?>
上の例の出力は以下となります。
PDO::FETCH_ASSOC: Return next row as an array indexed by column name
Array
(
    [NAME] => apple
    [COLOUR] => red
)
PDO::FETCH_BOTH: Return next row as an array indexed by both column name and number
Array
(
    [NAME] => banana
    [0] => banana
    [COLOUR] => yellow
    [1] => yellow
)
PDO::FETCH_LAZY: Return next row as an anonymous object with column names as properties
PDORow Object
(
    [NAME] => orange
    [COLOUR] => orange
)
PDO::FETCH_OBJ: Return next row as an anonymous object with column names as properties
kiwi
    例 1679. スクロール可能なカーソルで行を取得する
<?php
function readDataForwards($dbh) {
  $sql = 'SELECT hand, won, bet FROM mynumbers ORDER BY BET';
  try {
    $stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR, PDO::CURSOR_SCROLL));
    $stmt->execute();
    while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)) {
      $data = $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
      print $data;
    }
    $stmt = null;
  }
  catch (PDOException $e) {
    print $e->getMessage();
  }
}
function readDataBackwards($dbh) {
  $sql = 'SELECT hand, won, bet FROM mynumbers ORDER BY bet';
  try {
    $stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR, PDO::CURSOR_SCROLL));
    $stmt->execute();
    $row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_LAST);
    do {
      $data = $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
      print $data;
    } while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_PRIOR));
    $stmt = null;
  }
  catch (PDOException $e) {
    print $e->getMessage();
  }
}
print "Reading forwards:\n";
readDataForwards($conn);
print "Reading backwards:\n";
readDataBackwards($conn);
?>
上の例の出力は以下となります。
Reading forwards:
21    10    5
16    0     5
19    20    10
Reading backwards:
19    20    10
16    0     5
21    10    5
    参考
| PDO->query() | 
| PDOStatement->fetchAll() | 
| PDOStatement->fetchColumn() | 
| PDO->prepare() | 
| PDOStatement->setFetchMode() | 
Weblioに収録されているすべての辞書からPDOStatement->fetch()を検索する場合は、下記のリンクをクリックしてください。
                     全ての辞書からPDOStatement->fetch()
                    を検索
                - PDOStatement->fetch()のページへのリンク