php - 尝试在 Amazon AWS 上的 mySQL 数据库上使用 JSON_OBJECT 函数
问题描述
我在将结果集转换为 JSON 时发现了这个问题
我对使用这个功能很感兴趣(这就是为什么我首先搜索并找到了这篇文章)但是当我尝试它时,没有返回任何结果。
提供的页面上的答案指出,您需要使用此功能的最低 mySQL 版本号(5.7)。
所以我的问题是:
有没有办法从 RDS 屏幕(或其他方式)找到我设置数据库的 MySQL 版本号?
假设版本是合规的,我的 PHP PDO 查询的工作方式是否完全相同?如果没有,是否有另一种方法可以使用或不使用 PHP PDO?
解决方案
您可以使用以下查询验证您的 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(),您可以获取常规结果集作为关联数组,然后使用 PHP 函数(如 json_encode())将该数组转换为 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"}]
推荐阅读
- python - python中是否有一个函数可以帮助我获取网页中隐藏的html数据?
- python-3.x - 硒元素不可点击。消息:将目标移出边界(会话信息:chrome=77.0.3865.90)
- c# - 具有依赖注入的 Entity Framework Core 是如何处理的?
- javascript - 为什么 Typescript 不鼓励将值设置为 null?
- c++ - 使用 MFC 读取文件
- python - 如何在 aiohttp 中设置查询处理程序
- laravel - 如何在查询中包含另一个表中的列?
- mysql - 在多个表中更新,设置多个值
- javascript - 如何将 jquery datepicker 格式转换为时间戳格式,如 dd-mm-yyyy (28/09/2019 3:40pm)
- javascript - 在反应中映射所有非空对象