php - MySQL选择很多表,每个表的结果都是它自己的键/值对

标签 php mysql

希望这不是一个愚蠢的问题,在标题中很难解释但是......我有一定数量的表格,其中大部分没有相同的结构......除了 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/

相关文章:

php - 如何修复 YAML 文件上的 "Circular reference"错误?

php - (使用MySQL插入)当记录存在时找不到该记录的id

php - 如何将 PHP 表格下载到 CSV 文件中

php - mysql 如果错误连接 - css 在下一次尝试中显示错误

MySQL:(全文/索引)搜索 "one-word-columns"

mysql - Distinct 在 Crystal 报表和 mysql 中不起作用

php - 无法在 PHP 扩展中编译虚拟文件

mysql - 如何在 MySQL 5.7 中组织这个查询?

mysql - 我只是将文本文件加载到表中......然后我收到这样的错误

从/images 检索图像的 php 代码