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でしょうけど。