Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Slim$app->;JSON API的呈现问题_Php_Json_Api_Slim - Fatal编程技术网

Php Slim$app->;JSON API的呈现问题

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

这是一个相当简单的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($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
我已经更新了我的答案谢谢,你帮了我很大的忙。