尝试在Amazon AWS上的mySQL数据库上使用JSON_OBJECT函数

问题描述 投票:1回答:1

我发现this question将结果集转换为JSON

我有兴趣使用这个功能(这就是为什么我在搜索并首先发现这篇文章)但是当我尝试它时,没有结果回来。

提供的页面上的答案表明,您需要使用此函数的最小mySQL版本号(5.7)。

所以我的问题是:

  1. 有没有办法从RDS屏幕(或其他方式)找到我设置我的数据库的MySQL版本号?
  2. 假设版本是兼容的,我的PHP PDO查询是否完全相同?如果没有,是否有其他方法可以使用或不使用PHP PDO?
php mysql json amazon-web-services pdo
1个回答
0
投票

您可以使用此查询验证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"}]
© www.soinside.com 2019 - 2024. All rights reserved.