1

PHP を使用しており、レコードセット全体を JSON 文字列に変換する方法が必要です。

Stack Overflow を検索しているときに、この解決策が機能することがわかりました。

function recordSetToJson($mysql_result) {
  $rs = array();
  while($rs[] = mysql_fetch_assoc($mysql_result)) {
    // you don´t really need to do anything here.
  }
  return json_encode($rs);
}

このコードの問題点は、この関数mysql_fetch_assoc()が PHP 5.5.0 で非推奨になったことです。もう1つのことは、PDOを使用してデータベースに接続していることです。

上記の状況を考えると、PDO レコードセットを JSON に変換するための最適なソリューションは何でしょうか? それ以降のバージョンの PHP でも動作するようにしたい。

4

2 に答える 2

15

解決策は簡単です。変数$stmtが PDO レコードセットであることを考慮すると、次のように JSON に変換できます。

json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));

このコードで使用されている関数の詳細については、次を参照してください。

http://www.php.net/manual/en/function.json-encode.php

http://www.php.net/manual/en/pdostatement.fetchall.php

于 2013-03-08T07:01:17.650 に答える
-1

You should use something like that

somewhere previously

$stmt = $pdo->prepare("SELECT * FROM fruit WHERE name = ?");
$stmt->execute(array("Apple"));
....


function recordSetToJson($stmt) {
  $json_result = array();
  while($tmp = $stmt->fetch() ) {
       $json_result[] = $tmp;
  }
  return json_encode($json_result);
}

But final solution will be totally depends form too many factors.

于 2013-03-08T06:28:36.457 に答える