我正在尝试将MySQL信息存储到JSON数组中,因此我可以在Chart.js中使用它来刷新图表,而无需刷新页面。我尝试将传感器信息添加到数组,但是由于某种原因,它仅输出最后发送的信息。我的数据库有3列,名称分别为sensor1,sensor2,sensor3。这是我尝试过的:
<?php
session_start();
if(!isset($_SESSION['usersId']))
{
header("Location: ../index.php");
exit();
}
else
{
include_once 'includes/dbh.inc.php';
}
$id = $_SESSION['userId'];
$dBname = "infosensor";
$conn = mysqli_connect($servername, $dBUsername, $dBPassword, $dBname);
$sql = "SELECT sensor1, sensor2, sensor3 FROM `$id` ORDER BY id DESC LIMIT 1;";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($result);
$jsonsensor = array();
if ($row)
{
$jsonsensor[] = $row;
}
echo json_encode($jsonsensor);
?>
输出:
[{"sensor1":"5","sensor2":"5","sensor3":"0"}]
<?php
session_start();
if(!isset($_SESSION['usersId']))
{
header("Location: ../index.php");
exit();
}
else
{
include_once 'includes/dbh.inc.php';
}
$id = $_SESSION['userId'];
$dBname = "infosensor";
$conn = mysqli_connect($servername, $dBUsername, $dBPassword, $dBname);
$sql = "SELECT sensor1, sensor2, sensor3 FROM `$id`;";
$result = mysqli_query($conn, $sql);
$jsonsensor = array();
if (mysqli_num_rows($result) > 0)
{
while ($row = mysqli_fetch_assoc($result))
{
$jsonsensor[] = $row;
}
}
echo json_encode($jsonsensor);
?>
此查询:
SELECT sensor1, sensor2, sensor3 FROM `$id` ORDER BY id DESC LIMIT 1
由于LIMIT 1
子句,将始终最多返回1条记录。如果需要所有记录,请从查询中删除该子句。
还应注意,可以直接从MySQL生成JSON,这比在两者之间使用php具有更好的性能。以下查询为您提供了一个唯一记录,该记录具有一个称为js
的唯一列,其中包含一个JSON数组,该数组将每个表行聚合为JSON对象:
select json_arrayagg(
json_object(
'sensor1', sensor1,
'sensor2, 'sensor2,
'sensor3', sensor3
)
) js
from mytable