PHP не возвращает json из MySQL

Я хочу получить базу данных MySQL на PHP и AngularJS.

Я делаю это:

<?php
require_once "connect.php";
header('Content-Type: application/json');
$rows = array();
$conn = mysqli_connect($host, $user, $db_pass, $db_name);
$quer = mysqli_query($conn,"SELECT * FROM Sheet1");
while ($data = mysqli_fetch_assoc($quer)) {
  $rows[] = $data;
}
echo json_encode($rows);
?>

Но ничего не возвращается, и когда я установил это как:

<?php
require_once "connect.php";
header('Content-Type: application/json');
$rows = array();
$conn = mysqli_connect($host, $user, $db_pass, $db_name);
$quer = mysqli_query($conn,"SELECT * FROM Sheet1");
while ($data = mysqli_fetch_assoc($quer)) {
  $rows = $data;
}
echo json_encode($rows);
?>

Я получу только одну последнюю запись

Мой основной файл html:

<!DOCTYPE html>
<html lang = "en" dir = "ltr">
  <head>
    <meta charset = "utf-8">
    <script src='https://ajax.googleapis.com/ajax/libs/angularjs/1.7.2/angular.min.js'></script>
    <title></title>
  </head>
  <body>
    <div ng-app = "App" ng-controller = "mainController">
      <ul ng-repeat = " x in data">
        <li>{{x.id}}</li>
      </ul>
    </div>
    <script src = "mainController.js">
    </script>
  </body>
</html>

и мой файл Javascript:

var app = angular.module('App', []);
app.controller('mainController', function($scope, $http){
  $http.get('database.php').then( function( response){
    $scope.data = response.data;
  });
});

Пожалуйста, за помощь, это моя первая попытка.

$rows = $data; должен быть $rows[] = $data;. в противном случае вы перезапишете значение. Закрытие как опечатка.
Script47 11.07.2018 13:12

Если ваш второй сценарий дает вам одну строку, но кажется, что первый ничего не дает, это не имеет смысла. Итак, я бы посмотрел на ваш код Angular, вот где будет ваша проблема.

RiggsFolly 11.07.2018 13:23

Риггс прав, то, что вы утверждаете, невозможно. Ваш первый пример кода должен быть правильным. Вы можете убедиться в этом, используя сетевой инструмент вашего браузера, чтобы просмотреть ваш AJAX-запрос к database.php и посмотреть, что такое необработанный ответ (щелкните запрос ajax и затем просмотрите вкладку Response). Если данные там выглядят правильно, значит, проблема где-то в вашем коде Javascript / Angular. Лично я бы попробовал $scope.data = response; - я не вижу доказательств того, что в вашем объекте response будет свойство data. Скорее всего, это будет массив. Вы проверяли наличие ошибок консоли ??

ADyson 11.07.2018 13:36

Консоль @ADyson не показывает ошибок. Первый скрипт даже не работает как независимый файл, так что, возможно, это какая-то ошибка в базе MySQL ?. Когда я меняю echo json_encode($rows) на echo json_encode($rows[1]), он работает нормально.

Zbyszggo 11.07.2018 13:54

"даже не работают" что именно означает? Ошибка PHP? Неожиданный выход? Пожалуйста, будьте ясны и точны. Также вы можете выполнить var_dump($rows); непосредственно перед строкой json_encode, чтобы проверить содержимое массива. Также возможен сбой json_encode. Он вернет false, если это произойдет, поэтому вы можете легко проверить это, а затем вы можете использовать json_last_error_msg () (php.net/manual/en/function.json-last-error-msg.php), чтобы узнать, почему. В основном я говорю, что вам нужно провести более тщательное расследование и отладку, чтобы точно определить, где происходит ошибка.

ADyson 11.07.2018 13:55

@ADyson Я использовал var_dump($rows);, и я получил все записи, поэтому массив работает, когда я добавляю json_last_error_msg(), я получаю SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data, а в RAW DATA я получаю Malformed UTF-8 characters, possibly incorrectly encoded. Таким образом, MySQL не конвертируется в UTF-8, или мой json должен быть конвертирован. Я пробовал mb_convert_encoding($rows, 'UTF-8');, но ничего не случилось и ничего не изменилось после преобразования базы MySQL в utf-8_polish_ci.

Zbyszggo 11.07.2018 14:48

Вы пробовали (помимо вышеперечисленного) json_encode($rows, JSON_UNESCAPED_UNICODE)? См. php.net/manual/en/json.constants.php. Немного сложно быть уверенным, не увидев необработанных данных. Также вы установили набор символов в своем соединении MySQL (php.net/manual/en/mysqli.set-charset.php)? Попробуйте комбинации из ваших предложений и моих и посмотрите, получится ли у вас что-то работать. P.S. ошибка JSON.parse возникает только из-за var_dump, она исчезнет, ​​когда вы ее удалите - очевидно, мы добавили в ответ не-JSON-контент, который ему не нравится.

ADyson 11.07.2018 15:20

@ADyson Вот мои необработанные данные pastebin.com/EtvAPBjf Я попробовал JSON_UNESCAPED_UNICODE, и ничего не изменилось, также mb_convert_encoding не работает. Может быть, мои данные MySQL сломаны и просто неправильно составлен синтаксис JSON ?.

Zbyszggo 12.07.2018 12:10

как насчет настройки кодировки для вашего соединения? Вы пробовали это? Вы пробовали все комбинации этих различных настроек, как предлагалось? Я сомневаюсь, что ваши данные полностью повреждены, если только там нет некоторых символов, которые даже не UTF8

ADyson 12.07.2018 12:18
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
9
58
0

Другие вопросы по теме