2017-02-15 38 views
2

我正在使用slim框架创建一个包含从我的数据库中获取所有帐户的路径的api。我尝试返回json中的帐户列表,但它删除了最后两个字符,这使得它成为无效的Json,因为它预期以}]结束。我不知道它为什么这样做以及如何解决它。Slim删除我的Json字符串上的最后两个字符

<?php 
header("Content-Type: application/json;charset=utf-8"); 

    class Account { 

     public function getAll(){ 

         $db_connection = new Connection(); 
         $conn = $db_connection->getConnection(); 
         $result = $conn->query("SELECT * from accounts"); 

         $numrows = $result->rowCount(); 
         if ($numrows > 0) { 
          $rowset = $result->fetchAll(PDO::FETCH_ASSOC); 
          } 
          else { 
           $message['Error'] = 'No Account found'; 
           $rowset = $message;  
          } 

         return $rowset; 

      } 
    } 

我打电话的GETALL方法在我的路线一样

$app->get('/Account/GetAll', function($request, $response, $args) use ($app){ 
    $application = new Account(); 
    return $response->withJSON($application->getAll()); 
}); 
+0

'$ numrows = $ result-> rowCount(); $ rowset = array(); ($ numrows> 0){rowset [] = $ result-> fetchAll(PDO :: FETCH_ASSOC); } else { $ message ['Error'] ='未找到帐户'; $ rowset = $ message; } return $ rowset;'检查一次 –

+0

@Anant我试过这个,但它仍然没有工作。 –

+0

它看起来像问题是基于字符限制。当我从帐户限制13中选择*时,它会返回一个有9225个字符的有效json。逐一列出所有列,限制为14个,我得到9587个字符。我减去2列增加限制15我得到9502个字符。减5列我得到9401个字符,限制为17个。我得到了9506个字符,限制了19个减7个字符。他们每个人,如果我加1到极限,它会抛出错误的字符串。请让我知道,如果你有任何解决方案。 –

回答

0

你有一些空白的PHP标记之外。最有可能的情况是你有一个空行<?php以上。或者,您可能在?>之后有两个空白行。

+0

我检查了我的代码,在php标记之前没有空行,也没有在php标记之后有空行。我意识到的是,当我在查询上设置了小于20的限制时,它的工作正常,但如果我不添加限制,则删除最后两个字符并从另一个应用程序调用它将引发错误,因为它不是有效的JSON。 –

+0

请创建一个非常小的单文件(&composer.json)示例应用程序,以显示问题。 –

+0

请我不明白你想让我创建什么文件。 –

相关问题