我发现this question将结果集转换为JSON
我有兴趣使用这个功能(这就是为什么我在搜索并首先发现这篇文章)但是当我尝试它时,没有结果回来。
提供的页面上的答案表明,您需要使用此函数的最小mySQL版本号(5.7)。
所以我的问题是:
您可以使用此查询验证MySQL服务器版本:
SELECT VERSION();
如果使用JSON_OBJECT(),结果将作为字符串返回到PDO,该字符串恰好包含JSON格式的结果。
$stmt = $pdo->prepare("SELECT JSON_OBJECT('id', id, 'name', name, 'age', age) as doc FROM person");
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($results);
输出:
array(1) {
[0]=>
array(1) {
["doc"]=>
string(37) "{"id": 1, "age": 14, "name": "Harry"}"
}
}
如果MySQL不支持JSON_OBJECT(),您可以将常规结果集作为关联数组获取,然后使用像json_encode()这样的PHP函数将该数组转换为JSON。
$stmt = $pdo->prepare("SELECT id, name, age FROM person");
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
$doc = json_encode($results);
echo $doc . "\n";
输出:
[{"id":"1","name":"Harry","age":"14"}]