Заполнение ассоциативного массива PHP с помощью цикла данными mysql

<?php
    $servername = "0.0.0.0";
    $username = "user";
    $password = "1235556";
    $dbName = "name";
    $conn = new mysqli($servername, $username, $password, $dbName);
    if ($conn->connect_error) {
      die("Connection failed: " . $conn->connect_error);
    }
    $query = "SELECT * FROM monitoring";
    $result = $conn->query($query);
    $jsonArray = array();
    if ($result->num_rows > 0) {
      while($row = $result->fetch_assoc()) {
        $jsonArrayItem = array();
        $jsonArrayItem['x'] = $row['time'];
        $jsonArrayItem['y'] = $row['players_now'];
        array_push($jsonArray, $jsonArrayItem);
      }
    }
    $conn->close();
    header('Content-type: application/json');
    echo json_encode($jsonArray);
?>

Сейчас я получаю данные в таком формате: [{"x":"2021-11-05 07:53:07","y":"17"},{"x":"2021-11-05 07:53:07","y":"13"}] И все, дальше строчки не создаются , он просто обновляет данные из базы данных. Мне нужно, чтобы данные из бд сохранялись в json с определенным промежутком. Мой ожидаемый результат json выглядит следующим образом:

           [    {
                       "x": "2021-11-05 07:50:07",
                       "y": "17"
                    },
                    {
                        "x": "2021-11-05 07:53:07",
                        "y": "21"
                    }
                    {
                        "x": "2021-11-05 07:56:07",
                        "y": "19"
                    }
                ]

Ответы (1 шт):

Автор решения: phpBear
  1. Позволю себе волность слегка упростить Ваш код. Использование array_push вызывает большие накладные расходы.
<?php
...
      while($row = $result->fetch_assoc()) {
        $jsonArray[] = array( 'x' => $row['time'],'y' => $row['players_now']);
      }
...
?>

  1. Выведите кол-во полученных записей из БД. Сдается мне, что там две записи и есть.
var_dump( $result->num_rows );
→ Ссылка