Заполнение ассоциативного массива 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
→ Ссылка
- Позволю себе волность слегка упростить Ваш код. Использование
array_pushвызывает большие накладные расходы.
<?php
...
while($row = $result->fetch_assoc()) {
$jsonArray[] = array( 'x' => $row['time'],'y' => $row['players_now']);
}
...
?>
- Выведите кол-во полученных записей из БД. Сдается мне, что там две записи и есть.
var_dump( $result->num_rows );