Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何调整PDO fetchAll()以将创建的数组的键设置为与多表查询中的表名匹配?_Php_Mysql_Arrays_Pdo - Fatal编程技术网

Php 如何调整PDO fetchAll()以将创建的数组的键设置为与多表查询中的表名匹配?

Php 如何调整PDO fetchAll()以将创建的数组的键设置为与多表查询中的表名匹配?,php,mysql,arrays,pdo,Php,Mysql,Arrays,Pdo,我正在通过UNIONALL查询三个结构相同的表中的一列 $sql=" (SELECT col1 FROM table1 WHERE col2 IN ('a','b','c') and col3 IS NOT NULL) UNION ALL (SELECT col1 FROM table2 WHERE col2 IN ('a','b','c') and col3 IS NOT NULL) UNION ALL (SELECT col1 FROM table3 WHERE col2 IN ('a',

我正在通过UNIONALL查询三个结构相同的表中的一列

 $sql="
(SELECT col1 FROM table1 WHERE col2 IN ('a','b','c') and col3 IS NOT NULL)
UNION ALL
(SELECT col1 FROM table2 WHERE col2 IN ('a','b','c') and col3 IS NOT NULL)
UNION ALL
(SELECT col1 FROM table3 WHERE col2 IN ('a','b','c')  and col3 IS NOT NULL)
";
然后我使用PDO准备并执行该语句

$stmt = $pdo->prepare($sql);
$stmt->execute();   
$var = $stmt->fetchAll(PDO::FETCH_ASSOC);
我的问题是,生成的数组:$var使用整数键,并将每个结果拆分为一个子数组。我需要将每个表的结果放在它们自己的子数组中,最好将表名作为键

因此,目前:

打印($var)
;给出:

Array 
    (
    [0] => Array ( [col1] => asd) 
    [1] => Array ( [col1] => sdf) 
    [2] => Array ( [col1] => dfg) 
    [3] => Array ( [col1] => fgh)
    )
我想:

Array 
   (
[table1] => Array 
    (
     [0] => Array ( [col1] => asd) 
     [1] => Array ( [col1] => sdf) 
    )

[table2] => Array 
    (
     [0] => Array ( [col1] => asd)      
    )

[table3] => Array 
    (
     [0] => Array ( [col1] => asd)      
    )

    )

不能在单个查询中执行此操作,但可以使用AS关键字将列名与其对应的表名作为前缀,然后只需对数组进行预处理,以获得类似于您的规范的内容