This question already has answers here:
PDO fetchAll group key-value pairs into assoc array

(2个答案)


在5个月前关闭。




我正在使用PDOStatement来查询数据库。每当我得到返回的行时,我都希望将其取入一个数组中,并以$row[0]作为键,并将该行中的后续元素作为值。

我当然可以编写foreach循环和if条件语句的组合来完成这项工作,如下所示:
private static function GetMySQLResult($dbname, $sqlString) {


        $dbh =  self::ConstructPDOObject($dbname);
         $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $result=array();
         foreach ($dbh->query($sqlString) as $row)
         {
            $result[$row[0]][]=$row[1];  // the simplest case for 2 columns, should add more to handle more columns

         }

         return $result;

}

但我正在寻找一种现有的方法;已经有这样的方法了吗?

最佳答案

积分归devdRew所有。 Check the other question here
显然,您可以按照答案中的说明进行操作。我也检查了一下,效果很好。

$q = $db->query("SELECT `name` AS name, `value` AS value FROM `settings`;");
$r  = $q->fetchAll(PDO::FETCH_KEY_PAIR);
编辑
该答案要求您最多指定2列:1个键和1个值。如果您需要从数据库中检索更多 key ,请查看下面的答案并阅读@nullabilty的注释。对于那些懒惰的人,这是他的方法:
$q->fetchAll(PDO::FETCH_UNIQUE);

10-07 13:15
查看更多