donglvlao8367 2015-04-02 09:54
浏览 55
已采纳

SQL数据 - 以特定格式编码json

I have php code that I'm using along with sql to get results from a DB base on EA number and ID number to graph them.

<?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);
        ?>

At the moment the way I'm getting my results after the json encode is like this:

[{"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"}]

I was hoping there was some way of separating them like so:

[{"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"}]

So that it’s multiple arrays of data based on which ID it is. Hope that makes sense, thanks

  • 写回答

1条回答 默认 最新

  • dongxian6715 2015-04-08 11:32
    关注

    One way of doing it would be to use an outer loop by ID and an inner loop to retrieve the values for each ID value, something like this:

    <?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);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100