2017-02-15 6 views
2

スリムフレームワークを使用して、データベースからすべてのアカウントを取得するためのルートを含むAPIを作成しています。私はjsonで口座のリストを返そうとしますが、最後の2文字は削除され、無効なJsonになります。}で終わると予想されるためです。なぜそれがそれをやっているのか、それをどう解決するのか分かりません。SlimはJsonストリングの最後の2文字を削除します

<?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; 

      } 
    } 

私はあなたがPHPタグのいくつかの空白の外側を持っている

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

'$ numrows = $ result-> rowCount(); $ rowset = array(); if($ numrows> 0){ $ rowset [] = $ result-> fetchAll(PDO :: FETCH_ASSOC); } else { $ message ['Error'] = 'アカウントが見つかりません'; $ rowset = $ message; } return $ rowset; '一度だけチェック –

+0

@Anantこれを試しましたが、それでも動作しませんでした。 –

+0

文字の制限に基づいているようです。アカウントの制限13から*を選択すると、9225文字の有効なjsonが返されます。すべての列を1つずつリミット14でリストすると、9587文字が得られます。私は2列を引いて限界を増やす15私は9502文字を得る。マイナス5列私は9401文字に限界17を得ます。私は9506文字に19マイナス7列を制限しています。それらのそれぞれは、私が限界に1を加えれば、それはエラーの悪い文字列を投げる。解決策があれば教えてください。 –

答えて

0

ように私のルートでのgetAllメソッドを呼び出しています。最も可能性の高いケースは、<?phpの上に空白行があることです。あるいは、?>の後に2つの空白行があります。

+0

私は自分のコードをチェックして、phpタグの前に空白行がなく、php closeタグの後ろに空白行もありません。私が気づいたのは、クエリに20未満の制限を置くと正常に動作しますが、制限を追加しないと最後の2文字が削除され、別のアプリケーションから呼び出すと、有効ではないためエラーがスローされますjson。 –

+0

問題を示してくれる本当に小さな1ファイル(&composer.json)のサンプルアプリケーションを作成してください。 –

+0

私が作成したいファイルがわかりません。 –

関連する問題