从mysql select语句中获取计数,然后解析为JSON

时间:2015-08-25 16:32:52

标签: php mysql arrays json pdo

我正在尝试从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"
      }
    }
  ]

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

1 个答案:

答案 0 :(得分: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);