Php Slim$app->;JSON API的呈现问题
这是一个相当简单的Slim$app->render问题,但我使用SQL查询通过Php Slim$app->;JSON API的呈现问题,php,json,api,slim,Php,Json,Api,Slim,这是一个相当简单的Slim$app->render问题,但我使用SQL查询通过$result返回表中的总列数,其中存储的数据如下所示:[{“total”:“12345”} 我想将其推广到JSON API,如下所示: $app->get('/api/total/', function() use ($app) { $query = "select count(*) AS total FROM sometable"; $data = $app->db->query($que
$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->render product{total:12345}
执行'total'=>$result['total']
会引发以下错误:
注意:未定义索引:总计
这是因为fetchAll返回结果数组。您可以使用
fetch()
。检查fetch是否没有失败也很好。然而,在这种特殊情况下,如果某个表存在,则不应该存在。另外,您使用fetch_obj并尝试将其作为数组访问,这是错误的。使用FETCH\u ASSOC
或使用FETCH\u 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');
如果您需要了解抓取的工作原理,请检查:您需要首先将数组转换为json,请尝试
json\u encode()
是否可以提供更多详细信息?此时您需要返回值<代码>$app->render(200,json_编码(数组('total'=>$result['total']))到底抛出了什么错误?@mgansler正在更新我的主要帖子,第二节。这导致了一个致命错误:无法使用stdClass类型的对象作为数组,因为它是fetch\u obj,所以你需要使用fetch作为数组或使用$result->total
我已经更新了我的答案谢谢,你帮了我很大的忙。