PDOStatement::fetch の返り値パターンのメモ
Posted: Updated:
PDOStatement::fetchに指定できる各fetch style
PHP: PDOStatement->fetch - Manual
mixed PDOStatement::fetch ([ int $fetch_style = PDO::FETCH_BOTH [, int $cursor_orientation = PDO::FETCH_ORI_NEXT [, int $cursor_offset = 0 ]]] )
PDOStatementオブジェクトに関連付けられた結果セットから1行取得します。 fetch_style パラメータは、PDO がその行をどの様に返すかを決定します。
ドキュメントを読んでも分かりづらいので、下記のfetch_styleについて結果をdumpしたコードを示す。
- PDO::FETCH_ASSOC
- PDO::FETCH_BOTH
- PDO::FETCH_OBJ
- PDO::FETCH_NUM
- PDO::FETCH_LAZY
各fetch_styleのdump結果
var_dump($Statement->fetch(PDO::FETCH_ASSOC)); /* array(3) { ["prefecture_code"]=> string(2) "11" ["prefecture_name"]=> string(9) "北海道" ["prefecture_area"]=> string(18) "東北・北海道" } */ var_dump($Statement->fetch(PDO::FETCH_BOTH)); /* array(6) { ["prefecture_code"]=> string(2) "11" [0]=> string(2) "11" ["prefecture_name"]=> string(9) "北海道" [1]=> string(9) "北海道" ["prefecture_area"]=> string(18) "東北・北海道" [2]=> string(18) "東北・北海道" } */ var_dump($Statement->fetch(PDO::FETCH_OBJ)); /* object(stdClass)#15 (3) { ["prefecture_code"]=> string(2) "11" ["prefecture_name"]=> string(9) "北海道" ["prefecture_area"]=> string(18) "東北・北海道" } */ var_dump($Statement->fetch(PDO::FETCH_NUM)); /* array(3) { [0]=> string(2) "11" [1]=> string(9) "北海道" [2]=> string(18) "東北・北海道" } */ var_dump($Statement->fetch(PDO::FETCH_LAZY)); /* object(PDORow)#15 (4) { ["queryString"]=> string(56) "SELECT * FROM map_prefecture WHERE prefecture_code = :id" ["prefecture_code"]=> string(2) "11" ["prefecture_name"]=> string(9) "北海道" ["prefecture_area"]=> string(18) "東北・北海道" } */
オブジェクトで返してくれるPDO::FETCH_OBJはなかなか楽しいかも。配列的な使い勝手を優先するなら、素直にPDO::FETCH_ASSOCでしょうけど。