我在将结果集转换为JSON时发现了this question
我对使用此功能感兴趣(这就是为什么我首先搜索并找到此帖子的原因),但是当我尝试使用此功能时,没有结果返回。
提供的页面上的答案表明,使用此功能需要最低的mySQL版本号(5.7)。
所以我的问题是:
是否可以通过RDS屏幕(或其他方式)找到设置数据库的MySQL版本号?
假定版本兼容,我的PHP PDO查询是否以完全相同的方式工作?如果没有,是否有另一种方法可以使用或不使用PHP PDO?
答案 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"}]