PHP PDOStatement : fetch a row, 作为第一列作为数组的键

标签 php pdostatement

<分区>

我正在使用 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 列结果,只是为了简化问题中的代码,而不是适用于所有情况。

最佳答案

学分归 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);

关于PHP PDOStatement : fetch a row, 作为第一列作为数组的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1387563/

相关文章:

php - 升级大量的 Joomla 站点

php - DB 计数和数组计数之间的性能差异

javascript - 我需要将 0 或 1 存储到服务器 php 中的 .status 文件

postgresql - 无法使用PDO序列化

php - 从 PDO 准备好的语句中获取原始 SQL 查询字符串

php - 带有 PDOStatement 的 PDO 在出现 "mysql server gone"错误时重新连接

php - 尝试使用 symfony2 制作联系表单示例

php - 将垃圾邮件机器人发送到黑洞