PDO按列名获取结果索引

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PDO按列名获取结果索引相关的知识,希望对你有一定的参考价值。

假设我有一个简单的表格

名字|电子邮件 a | a@a.com b | b@b.com

如果我做

$result = $db->fetchAll(PDO::FETCH_ASSOC)

例如,在SELECT *上,我得到类似的东西

Array{  
   [0] => array{  
            ['name'] => 'a'  
            ['email'] => 'a@a.com'  
         }  
   [1] => array{  
            ['name'] => 'b'  
            ['email'] => 'b@b.com' 
         }  
    }

我想要类似的东西

Array{
    ['name'] => Array{
               [0] => 'a'
               [1] => 'b'
              }
    ['email'] => Array{
               [0] => 'a@a.com'
               [1] => 'b@b.com'
              }
}

因此$ result ['name']是一个包含所有名称的数组。我知道我可以写一个非常小的功能来自己做。只是想知道是否有一些fetch_style参数可以自动执行。谢谢!

答案

任何PDO标志都无法做到这一点。 这是我建议的转换脚本,它非常小:

$result = [];
foreach($array as $arr) foreach($arr as $k=>$v) $result[$k][] = $v;

print_r($result);
另一答案

有一种方法可以做到这一点。

您可以使用PDO::FETCH_GROUP作为建议here

要返回按指定列的值分组的关联数组,请按位ORO PDO :: FETCH_COLUMN与PDO :: FETCH_GROUP。

此标志将按您选择的第一列进行索引,您只需将想要的索引字段移动到位置0即可。

以上是关于PDO按列名获取结果索引的主要内容,如果未能解决你的问题,请参考以下文章

使用 PDO 时如何获取原始表/列名?

pdo2

PHP PDO获取结果集

如何在asp.net的GridView中按列名而不是按索引获取单元格值

获取具有名称的 DataTable 列的索引

php pdo:获取表的列名