如何从多个表中选择数据并以json格式显示它们?
我有许多相同的表格。我需要从每个表中获取数据并将它们以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代码如何呢?
要在一个请求中执行此操作,您需要一个存储过程,然后遍历结果集并遍历结果。为了便于携带,您最好不要使用存储过程,因为它们不够便携。
继承人一些代码,我从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
表名不提前知道。 – dkhlus 2014-12-06 00:51:24
比你不可能在一次交易中做到这一点。你可以让你的数组表$'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
检查以下查询,它给出了这个想法,这只是针对单个表而它作品。你可以使用union来获得所有表的汇总...
select concat("{", (select group_concat(concat('["', concat_ws('","', col1_name, col2_name, col3_name), '"]')) from your_table) ,"}") from dual;
将数据提取到数组中,然后用'json_encode()'将其全部转储。你在哪里陷入困境? – Havenard 2014-12-06 00:11:57
Stackoverflow不是代码编写服务。请尝试自己解决这个问题,如果您遇到困难,请回复一个关于什么不工作的*特定*问题,我们很乐意提供帮助。 – Madbreaks 2014-12-06 00:12:12
@Madbreaks,我不明白如何使MySQL请求。我希望我自己写php代码。 – dkhlus 2014-12-06 00:14:07