невозможно отобразить детали файлов, которые сохранены в базе данных phpmyadmin

0

Я строю проект с угловым и php, у меня есть таблица "файлов", в которой я могу загружать файлы, используя только php. теперь я пытаюсь получить все данные о файлах в моей базе данных. моя ошибка в консоли:

 angular.js:13550 SyntaxError: Unexpected token < in JSON at position 0
    at Object.parse (native)

может кто-нибудь, пожалуйста, проверьте мой код?

Php для отображения:

    <?php header('Content-Type: text/html; charset=utf-8');
  $connection = mysqli_connect('localhost','root','','hamatkin');

  mysqli_query($connection,"SET character_set_client = utf8");
  mysqli_query($connection,"SET character_set_connection = utf8");
  mysqli_query($connection,"SET character_set_results = utf8");

  if(!$connection){
    die("couldnt connect".mysqli_error);
  }
  $query = "SELECT * FROM 'file' ";
  $queryResult = $connection->query($query);

  $queryResult2 = array();
  if($queryResult === FALSE) { die($connection->error); }
  if( $queryResult->num_rows>0){
    while($row = $queryResult->fetch_assoc()){
      $queryResult2[] = $row;
    }
  }
  $queryResult3 = json_encode($queryResult2);
   echo json_encode($queryResult3);
?>

контроллер:

"use strict";

angular.module('dataSystem').controller('allPriceOffersCtrl', function($scope,$route,$location,$http) {
  $http({method:'GET', url:'api/customers-tab/get-all-priceOffers.php/'})
      .then(function(response) {
        var arr = JSON.parse(JSON.parse(response.data));
        $scope.files = arr;
      })

      // This will log you the error code and trace, if there is an error.

      .catch(function(err) {
        console.log('err', err)
      });

});

Html:

    <div class="table-responsive">
  <table  class="customer-list table table-striped">
    <thead>
      <tr>
        <th class="Column-Header">מספר</th>
        <th class="Column-Header">משו</th>
        <th class="Column-Header">שם מלא</th>
        <th class="Column-Header">ת.ז./עוסק מורשה</th>
        <th class="Column-Header">עיר</th>
        <th class="Column-Header">כתובת</th>
        </tr>
    </thead>
    <tbody>
      <tr ng-repeat="x in files">
        <!-- <td>{{$index + 1}}</td> -->
        <td>{{ x.id}}</td>
        <td>{{ x.name}}</td>
        <td>{{ x.mime}}</td>
        <td> {{ x.size}} </td>
        <td> {{ x.data}} </td>
        <td> {{ x.created}} </td>
        </tr>
    </tbody>
  </table>
</div>
  • 0
    @MarkusLaire, чего не хватает в «если»? Я не поняла что вы предлагаете делать с $ queryResult2?
  • 0
    Я считаю, что вы должны инициализировать $queryResult2=array(); прежде чем использовать его. вероятно, не исправит вашу ошибку, но все же следует это сделать
Показать ещё 16 комментариев
Теги:

1 ответ

3
Лучший ответ

Типичный случай отладочно-недружественного кода.

Во-первых, вы должны проверить, может ли ваш $connection->query возвращать ошибку, то есть возвращаемое значение не является набором результатов, а false. Так

if($queryResult === false) {
    die($connection->error);
}

Даже тогда у вас должен быть "нормальный" результат, то есть вы ожидаете массив массивов, поэтому $queryResult2 по крайней мере должен быть инициализирован как массив:

$queryResult2 = array(); // before the while loop.

Кроме того: вам абсолютно не нужно проверять num_rows, просто выполняйте цикл while, потому что он просто не сделает ничего плохого, если нет строк. fetch - это умный!

Как оказалось, date столбца, которая упорядочивается, не существует.

После отладки до смешного долгого времени мы выяснили, что, вероятно, двоичные данные, хранящиеся в базе данных, и json_encode() возвращены false из-за "искаженного символа utf8". Часть угловой части должна была быть приспособлена, чтобы не расшифровывать/разбирать json слишком часто. Я был в предположении, что никакие двоичные данные не были сохранены в базе данных. Пусть это будет предупреждением, не имеют никаких предположений при отладке. Всегда проверяйте значения ошибок.

Друг-код помогает. Пожалуйста, мир, напишите дружественный отладочный код, потому что это не так много хлопот, и отладка становится такой же простой, как помещать сообщение об ошибке в какую-то поисковую систему и не позволять stackoverflow отлаживать ваш код в комментариях к вашему вопросу.

  • 0
    в моей базе данных "file" это мои столбцы: id / name / mime / size / data / создал - это где он устанавливает данные
  • 0
    а вы пытаетесь заказать по date где это может быть ... created ?
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню