2017-02-15 42 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

請我不明白你想讓我創建什麼文件。 –

相關問題