This question already has answers here:
PDO fetchAll group key-value pairs into assoc array
(2个答案)
在5个月前关闭。
我正在使用
我当然可以编写
但我正在寻找一种现有的方法;已经有这样的方法了吗?
该答案要求您最多指定2列:1个键和1个值。如果您需要从数据库中检索更多 key ,请查看下面的答案并阅读
(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);