【问题标题】:SQL data - encode json in particular formatSQL 数据 - 以特定格式编码 json
【发布时间】:2015-06-07 05:38:35
【问题描述】:

我有 php 代码和 sql 一起使用,以根据 EA 编号和 ID 编号从数据库中获取结果以绘制它们。

<?php   
            $sql=
                ("SELECT D as y,Total as a,PoweredOn as b 
                FROM MasterUsageTable 
                WHERE ID IN 
                (SELECT ID FROM MasterUsageTable
                WHERE EA_Number = '$valueEA' AND D BETWEEN #$valueSDate# AND #$valueEDate#)");

            $rs = odbc_exec($con, $sqlVMs);
            if (!$rs) {
                exit("Enter EA!");
            }
            $data = array();
                while ($row = odbc_fetch_array($rs)){
                    $data[] = $row;
                }           

            echo json_encode($data);
        ?>

目前我在 json 编码后得到结果的方式是这样的:

[{"y":"2015-03-26","a":"16","b":"14"},{"y":"2015-03-26 ","a":"59","b":"12"},{"y":"2015-03-26 ","a":"21","b":"5"},{"y":"2015-03-26 ","a":"35","b":"12"},{"y":"2015-03-26 ","a":"17","b":"2"}]

我希望有某种方法可以像这样将它们分开:

[{"y":"2015-03-26","a":"16","b":"14"},{"y":"2015-03-26 ","a":"59","b":"12"},{"y":"2015-03-26 ","a":"21","b":"5"}],[{"y":"2015-03-26 ","a":"35","b":"12"},{"y":"2015-03-26 ","a":"17","b":"2"}]

所以它是基于它的 ID 的多个数据数组。希望有道理,谢谢

【问题讨论】:

  • 您的 SQL 返回一个“集合”,因此无法按照您的意愿对其进行编码 - 信息不存在。可以将 ID 添加到查询中,然后转换 json,但我没有足够的技能来帮助解决这个问题。检查相关问题 - 可能有一个关于在地图中嵌入地图的问题。
  • 顺便说一句,您可以从 SQL 中删除 WHERE ID IN (SELECT ID FROM MasterUsageTable 部分,它的工作原理相同。

标签: php sql json ms-access-2003


【解决方案1】:

一种方法是使用一个按 ID 的外循环和一个内循环来检索每个 ID 值的值,如下所示:

<?php
// test data
$valueSDate = "2015-03-26";
$valueEDate = "2015-03-26";
$valueEA = "EA1";

$allData = array();
$con = odbc_connect(
        "Driver={Microsoft Access Driver (*.mdb, *.accdb)};" .
        "Dbq=C:\\Users\\Public\\Database1.accdb;",
        "Admin", "");
$rs1 = odbc_exec($con, 
        "SELECT DISTINCT ID " .
        "FROM MasterUsageTable " .
        "WHERE EA_Number = '$valueEA' " .
            "AND D BETWEEN #$valueSDate# AND #$valueEDate#");
while ($row1 = odbc_fetch_array($rs1)) {
    $id = $row1["ID"];
    $rs2 = odbc_exec($con, 
            "SELECT D as y,Total as a,PoweredOn as b " .
            "FROM MasterUsageTable " .
            "WHERE ID = $id AND EA_Number = '$valueEA' " .
                "AND D BETWEEN #$valueSDate# AND #$valueEDate#");
    $idData = array();
    while ($row2 = odbc_fetch_array($rs2)) {
        $idData[] = $row2;
    }
    $allData[] = $idData;
}

echo json_encode($allData);

【讨论】:

  • 谢谢老兄,我问了这个问题后我设法弄明白了,但我相信你的解决方案也有效!
猜你喜欢
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多