質問するログイン新規登録

回答編集履歴

1

追記

2017/09/11 00:21

投稿

退会済みユーザー
answer CHANGED
@@ -1,3 +1,17 @@
1
1
  `$json = json_encode($result->fetchAll());`
2
2
  でイイ気がする。
3
- [PDOStatement::fetchAll](http://php.net/manual/ja/pdostatement.fetchall.php)
3
+ [PDOStatement::fetchAll](http://php.net/manual/ja/pdostatement.fetchall.php)
4
+
5
+ **追記**
6
+ 回答がちょっと雑だったんで追記します。
7
+
8
+ *確認しておきたい知識
9
+ ・PDO::query を実施すると、[PDOStatement](http://php.net/manual/ja/class.pdostatement.php) オブジェクトを返します。
10
+ ・json_encode() は、resource 型以外の任意の型を JSON 形式にした文字列として返します。
11
+
12
+ 今回のケースでは、json_encode() に PDOStatement をそのまま入れているため、PDOStatement のプロパティ(queryString)が表示されています。
13
+ 本来期待するのは「結果セット」を json_encode したいので、「結果セット」を渡して上げる必要があります。
14
+ PDOStatement から全ての結果行を含む配列をとりだすには、PDOStatement::fetchAll が用意されているので、最初の回答のように記述すると、「結果セット」の配列を json_encode することが出来ます。
15
+
16
+ 結果セットとして渡す配列は、[PDOフェッチパターン大全](http://qiita.com/mpyw/items/d52351bd1a8068344cc2)のように、PDO::FETCH_* 定数 を PDOStatement::fetchAll に与えることで、容易に調整できるので、必要であれば、そちらを使って加工すると良いです。
17
+