我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) {
// the simplest case for 2 columns,
// should add more to handle more columns
$result[$row[0]][]=$row[1];
}
return $result;
}
但我正在寻找一种现有的方法;有没有这样的方法已经存在?
为什么重新打开这个问题。
这里要问的显然是 PDO::FETCH_GROUP|PDO::FETCH_ASSOC 的组合。PDO::FETCH_KEY_PAIR 仅适用于 2 列结果。但是这里的示例是一个 2 列结果,仅用于简化问题中的代码,而不适用于所有情况。