【问题标题】:Store database infos into json array to use in chart.js将数据库信息存储到 json 数组中以在 chart.js 中使用
【发布时间】:2019-11-08 22:56:00
【问题描述】:

我正在尝试将 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"}]

【问题讨论】:

  • 从您想要所有行的查询中删除 LIMIT 1
  • @GMB 没用...
  • 我明白了,必须更改 SQL 部分

标签: php mysql arrays json chart.js2


【解决方案1】:

这个查询:

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

【讨论】:

  • 我如何才能只存储您发布的代码中的 sensor1 信息?
  • 你是怎么输出的?
  • @Joao: 你想要结果集中只有sensor1 列,而不是其他列吗?
  • 如果你也能得到其他列那就太好了,我需要为每一列创建一个数组
  • @Joao:我不清楚你的预期结果。您能否编辑您的问题以显示您希望生成的结果?
【解决方案2】:
<?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);
?>

【讨论】:

    猜你喜欢
    • 2021-02-17
    • 2012-08-03
    • 1970-01-01
    • 2013-12-03
    • 2021-03-09
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    相关资源
    最近更新 更多