2015-04-02 40 views
2

我有我使用的php代碼和sql一起使用以獲取基於EA編號和ID編號的數據庫結果來繪製它們。SQL數據 - 以特定格式對json進行編碼

<?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年3月26日」, 「一」: 「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年3月26日」, 「一個」: 「17」, 「b」: 「2」}]

我希望有的某種方式把它們分開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」}]

因此,它是基於哪個ID的多個數據陣列。希望是有道理的,感謝

+0

你的SQL回報一個單一的「集合」,所以沒有辦法讓它編碼,只要你想 - 信息只是不存在。向查詢添加ID並轉換json可能是可能的,但我沒有足夠的技能來幫助解決這個問題。檢查相關問題 - 可能有一個關於在地圖內嵌入地圖的問題。 – Turophile 2015-04-02 12:47:46

+0

順便說一下,你可以刪除'WHERE ID IN (SELECT ID FROM MasterUsageTable'部分從你的SQL中,它將起到同樣的作用。 – Turophile 2015-04-02 12:48:28

回答

0

做這將是由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); 
+0

謝謝你,我以某種方式設法解決了這個問題之後,但我相信你的解決方案可行太! – Vickie 2015-04-08 12:56:44

相關問題