PDOStatement::fetch
(no version information, might be only in CVS)
PDOStatement::fetch --
結果セットから次の行を取得する
説明
mixed
PDOStatement::fetch ( [int fetch_style [, int cursor_orientation [, int cursor_offset]]] )
警告 |
この関数は、
実験的なステータスにあります。これは、この関数の
動作、関数名、ここで書かれていること全てがPHPの将来のバージョンで予告
なく変更される可能性があることを意味します。注意を喚起するとともに自分
のリスクでこの関数を使用してください。 |
PDOStatementオブジェクトに関連付けられた結果セットから1行取得します。
パラメータ
- fetch_style
次のレコードを呼び出し元に返す方法を制御します。
この値は、PDO_FETCH_* 定数のどれかで、
PDO_FETCH_BOTHがデフォルトです。
PDO_FETCH_ASSOC: は、結果セットに
返された際のカラム名で添字を付けた配列を返します。
PDO_FETCH_BOTH (デフォルト):
結果セットに返された際の
カラム名とカラム番号で添字を付けた配列を返します。
PDO_FETCH_BOUND:
TRUE を返し、結果セットのカラムの値を
PDOStatement::bindParam()メソッドで
バインドされたPHP変数に代入します。
PDO_FETCH_LAZY:
PDO_FETCH_BOTH とPDO_FETCH_OBJの
組合せで、オブジェクト変数名を作成します。
PDO_FETCH_OBJ:
結果セットに返された際のカラム名と同名のプロパティを有する
匿名のオブジェクトを返します。
PDO_FETCH_NUM:
結果セットに返された際の0から始まる
カラム番号を添字とする配列を返します。
- cursor_orientation
スクロール可能なカーソルを表すPDOStatementオブジェクトの場合、
この値により呼び出し側に返される行を定義します。
この値は、PDO_FETCH_ORI_* 定数のどれかと
する必要があり、
PDO_FETCH_ORI_NEXTがデフォルトとなっています。
- offset
スクロール可能なカーソルを表すPDOStatementオブジェクトの場合で、
cursor_orientationパラメータが
PDO_FETCH_ORI_ABSに設定された場合、この値により
取得される結果セットの行の絶対位置が指定されます。
スクロール可能なカーソルを表すPDOStatementオブジェクトの場合で、
cursor_orientationパラメータが
PDO_FETCH_ORI_RELに設定された場合、この値は、
PDOStatement::fetch() がコールされる前のカーソルの
位置を基準として取得する行の位置を指定します。
例
例 1. 異なる取得方法で行を取得する
<?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 |
|
例 2. スクロール可能なカーソルで行を取得する
<?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::fetchSingle() |
PDOStatement::prepare() |
PDOStatement::setFetchMode() |