代码之家  ›  专栏  ›  技术社区  ›  ControlAltDel

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

  •  0
  • ControlAltDel  · 技术社区  · 7 年前

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

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

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

    所以我的问题是:

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

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

    1 回复  |  直到 7 年前
        1
  •  0
  •   Bill Karwin    7 年前

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