【问题标题】:Get count from mysql select statement then parse to JSON从 mysql select 语句中获取计数,然后解析为 JSON
【发布时间】:2015-11-19 11:23:45
【问题描述】:

我正在尝试从 MySQL 表中获取数据并以以下格式创建 JSON 输出。

{
  "count": 1,
  "results": [
    {
      "user_id": 1,
      "login_name": "testname"
      }
    }
  ]
}

这是我用来生成 JSON 的 PHP

$user = "1"; 

$query = $db->prepare("SELECT 
c.user_update, 
c.id

FROM (SELECT * FROM myupdates ) AS c

ORDER BY c.id DESC ");

$query->bindValue(':user_id', $user, PDO::PARAM_STR);

try {

 $query->execute();

 $rows = array();

 while ($data = $query->fetch(PDO::FETCH_ASSOC)) {

    $rows[] = $data;

}

echo "<pre>".json_encode($rows, JSON_PRETTY_PRINT);

 exit();

} catch (PDOException $e) {
     echo $error;
     exit();
}

以下是我使用上述代码得到的输出:

[
    {
      "user_id": 1,
      "login_name": "testname"
      }
    }
  ]

我需要的是输出计数(“计数”:1)以及 JSON 的其余部分。

【问题讨论】:

    标签: php mysql arrays json pdo


    【解决方案1】:

    您需要将 $rows 数组添加为另一个数组的元素,以及包含计数的元素。

    这应该会产生所需的输出:

    //Wrap results in another array
    $return_array = array(
        'count' => count($rows),
        'results' => $rows
    );
    //Print it
    echo json_encode($return_array, JSON_PRETTY_PRINT);
    

    【讨论】:

    • 即使您认为这是一个微不足道的答案,也请添加一些上下文 cmets 以帮助其他经验不足的开发人员弄清楚您的解决方案的作用。
    • @HenriqueBarcelos 感谢您指出这一点。我总是这样做,但我习惯于首先在“琐碎”问题上发布代码 - 部分是为了避免其他人在我摆弄我的英语语法时浪费时间写答案,部分是为了让 OP 抢先一步。 ..这次我在上下文中编辑之前被打断了......我可能需要修改这个习惯,因为这不是我第一次在(通常)仅代码和编辑之间非常短的时间内收到 cmets(我怀疑仅代码被标记为某种审查)。
    • 它没有被这样标记,但它被放在“低质量帖子”的审查队列中。通常,它被认为是帖子的长度和内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 2014-01-18
    • 2014-03-08
    • 2022-06-10
    • 1970-01-01
    • 2012-06-21
    相关资源
    最近更新 更多