希望这不是一个愚蠢的问题,很难在标题中解释,但是…我有一定数量的表,其中大多数没有相同的结构…除了startDate
。例如,假设有三个表具有如下列结构:
t1:
id a b c startDate
t2:
id e f g h i startDate
t3:
id j k startDate
我想把它们都转换成类似json类型格式的结果:
[{"t1":array({
//all rows for t1
})
},{"t2":array({
//all rows for t2
})
},{"t3":array({
//all rows for t3
})
}]
我希望能够在PHP中执行以下操作:
foreach ($results as $key => $val) {
if ($key == "t1") {
//parse t1 $val array
}elseif ($key == "t2") {
//parse t2 $val array
}elseif ($key == "t3") {
//parse t3 $val array
}
}
我知道使用
UNION ALL
是可能的,但是我必须对列执行NULL
值,因此如果我有6或7个表,查询将非常混乱。有没有一种方法可以使用GROUP_CONCAT
获得期望的结果,也可以使用startDate BETWEEN arg1 AND arg2
?或者…最好做一个
for
循环并查询每个表,然后将它们放在PHP中? 最佳答案
请试试这个
//db connection
$json = array();
$tables = array("t1","t2","t3");
for($i=0;$i<count($tables);$i++){
$rows = array();$row = array();
$sql = "SELECT * FROM $tables[$i]";
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result)){
$rows[] = $row;
}
$json[$tables[$i]] = $rows;
}
//you can use print_r($json) to display the array or json like
echo json_encode($json)
关于php - MySQL选择许多表,每个表的结果都是它自己的键/值对,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30413857/