Py学习  »  DATABASE

尝试在amazon aws的mysql数据库上使用json_对象函数

ControlAltDel • 5 年前 • 1563 次点击  

我发现 this question 关于将结果集转换为json

我对使用这个函数感兴趣(这就是为什么我在搜索和找到这篇文章一开始),但当我尝试它,没有结果回来。

提供的页面上的答案指出,使用此函数需要的MySQL版本号(5.7)最少。

所以我的问题是:

  1. 有没有办法从rds屏幕(或其他方式)找到我设置数据库的mysql版本号?

  2. 假设该版本是兼容的,那么我的php pdo查询的工作方式是否完全相同?如果没有,是否有其他方法可以使用或不使用php pdo来实现这一点?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43827
 
1563 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Bill Karwin
Reply   •   1 楼
Bill Karwin    6 年前

您可以用这个查询验证您的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"}]