2017-02-15 13 views
2

Я использую slim framework для создания 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(); if ($ numrows> 0) { $ rowset [] = $ result-> fetchAll (PDO :: FETCH_ASSOC); } else { $ message ['Error'] = 'Без учетной записи найдено'; $ rowset = $ message; } return $ rowset; 'check once –

+0

@Anant Я пробовал это, но он все еще не работал. –

+0

Похоже, что проблема основана на ограничении символов. Когда я делаю выбор * из лимита 13 аккаунтов, он возвращает действительный json с 9225 символами. перечисляя все столбцы один за другим с лимитом 14, я получаю 9587 символов. I минус 2 столбца, увеличивающие предел 15 Я получаю 9502 символа. Минус 5 столбцов Я получаю 9401 символов с лимитом 17. Я получил 9506 символов, ограничивающих 19 минус 7 столбцов. Каждый из них, если я добавлю 1 к пределу, выкидывает ошибочную строку ошибки. Пожалуйста, дайте мне знать, если у вас есть решение. –

ответ

0

У вас есть некоторые пробелы вне PHP тегов. Наиболее вероятным случаем является то, что у вас есть пустая строка выше <?php. Кроме того, у вас могут быть две пустые строки после ?>.

+0

Я проверил свои коды и нет пустой строки перед тегом php, и ни один после тега php close. Я понял, что когда я помещаю лимит менее 20 в запрос, он работает нормально, но если я не добавляю ограничение, он удаляет последние два символа и вызывает его из другого приложения, выдает ошибку, потому что это недействительно JSON. –

+0

Создайте небольшое приложение с одним файлом (& composer.json), которое показывает проблему, пожалуйста. –

+0

Пожалуйста, я не понимаю, какой файл вы хотите создать. –

 Смежные вопросы

  • Нет связанных вопросов^_^