2014-12-06 82 views
-2

我有許多相同的表格。我需要從每個表中獲取數據並將它們以json格式導出:如何從多個表中選擇數據並以json格式顯示它們?

[ 
    "table1": { 
    ["first colomn value", "second colomn value", ...], 
    ["first colomn value", "second colomn value", ...], 
    ["first colomn value", "second colomn value", ...], 
    ... 
    }, 
    "table2": { 
    //values from table2 
    }, 
    ... 
] 

是否可以創建一個請求mysql?請求和php代碼如何呢?

+1

將數據提取到數組中,然後用'json_encode()'將其全部轉儲。你在哪裏陷入困境? – Havenard 2014-12-06 00:11:57

+0

Stackoverflow不是代碼編寫服務。請嘗試自己解決這個問題,如果您遇到困難,請回復一個關於什麼不工作的*特定*問題,我們很樂意提供幫助。 – Madbreaks 2014-12-06 00:12:12

+0

@Madbreaks,我不明白如何使MySQL請求。我希望我自己寫php代碼。 – dkhlus 2014-12-06 00:14:07

回答

-2

要在一個請求中執行此操作,您需要一個存儲過程,然後遍歷結果集並遍歷結果。爲了便於攜帶,您最好不要使用存儲過程,因爲它們不夠便攜。

繼承人一些代碼,我從http://php.net/manual/en/pdostatement.nextrowset.php修改使用PDO

<?php 
// dont forget to instantiate $conn 
$sql = 'CALL multiple_rowsets()'; 
$stmt = $conn->query($sql); 
$jsonArr = array(); 
do { 
    $rowset = $stmt->fetchAll(PDO::FETCH_NUM); 
    if ($rowset) { 
     $jsonArr[] = tojson($rowset, $i); 
    } 
} while ($stmt->nextRowset()); 

$jsonData = "{"; 
$i = 0; 

foreaeach ($jsonArr as $json) 
{ 
    if($i !== 0) $json .=','; 
    else $i = 1; 
    $jsonData .= $json; 
}  

$jsonData .= "}"; 

echo $jsonData; // your output 

function tojson(&$rowset) { 
    $json = '{'; 
    $p = 0; 
    foreach ($rowset as $row) { 
     if($p !== 0) $json .=','; 
      else $p = 1; 
     $json .= '['; 
     $i = 0; 
     foreach ($row as $col) { 
      if($i !== 0) $json .=','; 
      else $i = 1; 
      $json .= $col 
     } 
     $json = "]"; 
    } 
    $json.="}"; 
    return $json; 
} 
?> 

這是未經測試,但應該給你的怎麼辦呢

現在您的存儲過程中的想法應該看起來像

DELIMITER // 
CREATE PROCEDURE multiple_rowsets() 
    BEGIN 
    SELECT * FROM table1; 
    SELECT * FROM table2; 
    SELECT * FROM table3; 
    END // 
DELIMITER ; 

但是,如果你可以不止一次去數據庫,我會高度推薦只是ru nning從php中選擇每個結果,將每個結果轉換爲json,將每個結果排列在數組中,然後遍歷創建一個大json

+0

表名不提前知道。 – dkhlus 2014-12-06 00:51:24

+0

比你不可能在一次交易中做到這一點。你可以讓你的數組表$'table',遍歷每個表,將結果存儲在一個數組中,並像@ Havenard所說的那樣在數組上調用'json_encode()'。連接到數據庫使用http://php.net/manual/en/book.pdo.php和http://php.net/manual/en/pdo.connections.php – user1290942 2014-12-06 01:05:10

0

檢查以下查詢,它給出了這個想法,這只是針對單個表而它作品。你可以使用union來獲得所有表的彙總...

select concat("{", (select group_concat(concat('["', concat_ws('","', col1_name, col2_name, col3_name), '"]')) from your_table) ,"}") from dual; 
相關問題