【问题标题】:Does PHP PDO have a built in method to return a result as array with ID as key?PHP PDO 是否有内置方法以 ID 为键的数组返回结果?
【发布时间】:2015-09-14 20:26:57
【问题描述】:

假设我有一张桌子

id,f1,f2
10,'aaa','aaaaaa'
20,'bbb','bbbbb'

有没有办法使用 PDO 来查询数据库并将结果作为数组获取:

[10=>['aaa','aaaaa'], 20=>['bbb','bbbbb'] ]

【问题讨论】:

  • 只有PDO::FETCH_KEY_PAIR。根据array_column+array_combine 后安排fetchAll 列表是最简单的。
  • 没有。即使 pdo 确实有类似的东西,它应该如何处理表的多字段 PK?如果查询中没有选择 ID 字段怎么办?
  • @mario 足以满足我的需要。作为答案,我会接受(虽然,如果我有超过 2 个字段,则不回答)。

标签: php mysql pdo php-5.5


【解决方案1】:

是的,这是可能的。
这是使 PDO 如此出色的原因之一。

你只需要PDO::FETCH_UNIQUE常量:

$data = $pdo->query('SELECT id,f1,f2 FROM t')->fetchAll(PDO::FETCH_UNIQUE);

会给你想要的结果。

你不妨浏览一下我最近写的文章中的其他fetch modes for PDO

【讨论】:

    【解决方案2】:

    据我所知,您不必在遍历结果时创建它

     $array = [];
    
     foreach($pdoResults as $result)
     {
         $array[$result['id']] = [$result[$f1],$result[$f2]];
     }
    

    【讨论】:

    • 值得注意的是,这种格式不适用于旧版本的 PHP。它应该是 $array[$result['id']] = array($result[$f1],$result[$f2]);而不是
    【解决方案3】:

    不,PDO 没有这样的功能。您必须处理结果集。

    【讨论】:

    • 这是一个不正确的说法,获取模式 PDO::FETCH_UNIQUE 符合 OP 的要求
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 2012-11-21
    • 2012-05-27
    • 2010-09-21
    • 1970-01-01
    • 2019-04-06
    相关资源
    最近更新 更多