将数据库信息存储到json数组中以在chart.js中使用

问题描述 投票:0回答:2

我正在尝试将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 mysql arrays json chart.js2
2个回答
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);
?>


0
投票

此查询:

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
© www.soinside.com 2019 - 2024. All rights reserved.