@barakuda1

Почему json возвращает только один элемент?

Здравствуйте. В базе данных хранится две строки.
Мой запрос возвращает только одну. Как исправить?

$.ajax({
            type: "POST",
            url: 'db.php',
            data: $(this).serialize(),
            success: function(response)
            {
                var jsonData = JSON.parse(response);
                console.log(jsonData);
           }
       });


<?
  $host = '';  // Хост, у нас все локально
  $user = '';    // Имя созданного вами пользователя
  $pass = ''; // Установленный вами пароль пользователю
  $db_name = '';   // Имя базы данных
  $link = mysqli_connect($host, $user, $pass, $db_name); // Соединяемся с базой
  $link->set_charset("utf8mb4");

  if (!$link) {
    echo 'Не могу соединиться с БД. Код ошибки: ' . mysqli_connect_errno() . ', ошибка: ' . mysqli_connect_error();
    exit;
  }

  $sql = mysqli_query($link, 'SELECT `id`, `name`, `phone`, `email` FROM `my_table`');
  $result = mysqli_fetch_array($sql);
  
  echo json_encode($result);

  // while ($result = mysqli_fetch_array($sql)) {
  //    json_encode($result);
  //  }

    mysqli_close($link);
?>
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
toxa82
@toxa82
Потому что вы одну строку получаете, энкодите и возвращаете. Вам нужно через while сохранить все строки в массив, заэнкодить этот весь массив и вернуть его. Что-то типа:
$sql = mysqli_query($link, 'SELECT `id`, `name`, `phone`, `email` FROM `my_table`');
$rows = [];
while ($result = mysqli_fetch_array($sql)) {
    $rows[] = $result;
}
echo json_encode($rows);

mysqli_close($link);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы