这是一个相当简单的Slim $ app->渲染问题,但我正在使用SQL查询通过$result
返回表中的列总数,并且存储在其中的数据看起来像这个:[{"total":"12345"}]
我想将其推送到JSON API,如下所示:
$app->get('/api/total/', function() use ($app) {
$query = "select count(*) AS total FROM sometable";
$data = $app->db->query($query);
$result = $data->fetchAll(PDO::FETCH_OBJ);
$app->render(
200, json_encode(array(
'total' => $result['total']
))
);
});
如何制作Slim的$ app->渲染产生{total:12345}
?
执行'total' => $result['total']
会引发错误,例如:
注意:未定义的索引:总计
答案 0 :(得分:2)
这是因为fetchAll返回结果数组。您可以使用fetch()
代替。检查fetch是否失败也是很好的。然而,在这种特殊情况下,如果存在某种情况,则不应该。你也使用fetch_obj,并尝试将其作为一个错误的数组访问。使用FETCH_ASSOC
或使用FETCH_OBJ
进行适当的对象访问。
$app->get('/api/total/', function() use ($app) {
$query = "select count(*) AS total FROM sometable";
$data = $app->db->query($query);
$result = $data->fetch(PDO::FETCH_OBJ);
if($result !== false) {
$app->render(
200, json_encode(array(
'total' => $result->total
))
);
} else {
$app->render(
404, json_encode(array(
'error' => 'Not Found'
))
);
}
});
还记得设置内容类型
是好的$app->response->headers->set('Content-Type', 'application/json');
如果您需要知道取件的工作方式,请检查:http://php.net/manual/en/pdostatement.fetch.php