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

时间:2019-02-20 20:35:03

标签: php mysql json amazon-web-services pdo

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

我对使用此功能感兴趣(这就是为什么我首先搜索并找到此帖子的原因),但是当我尝试使用此功能时,没有结果返回。

提供的页面上的答案表明,使用此功能需要最低的mySQL版本号(5.7)。

所以我的问题是:

  1. 是否可以通过RDS屏幕(或其他方式)找到设置数据库的MySQL版本号?

  2. 假定版本兼容,我的PHP PDO查询是否以完全相同的方式工作?如果没有,是否有另一种方法可以使用或不使用PHP PDO?

1 个答案:

答案 0 :(得分:0)

您可以通过以下查询验证您的MySQL服务器版本:

SELECT VERSION();

如果您使用JSON_OBJECT(),结果将作为字符串(恰好包含JSON格式的结果)返回给PDO。

$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"}]