相关疑难解决方法(0)

PDO fetchAll组键值对进入assoc数组

我偶尔会遇到类似的查询:

SELECT `key`, `value` FROM `settings`;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我想获得一个关联数组,使用key&的值value作为该数组的相应条目,例如,如果数据库包含:('first_name', 'Tom'), ('last_name', 'Jeferson'),则数组应该是array('first_name' => 'Tom', 'last_name' => 'Jeferson');.

最常见的方法是:

$settings_flat = $db
    ->query("SELECT `name`, `value` FROM `settings`;")
    ->fetchAll(PDO::FETCH_ASSOC);

$settings   = array();

foreach ($settings_flat as $setting) {
    $settings[$setting['name']] = $setting['value'];
}
Run Code Online (Sandbox Code Playgroud)

*另一种方法是通过调用fetchAll(PDO::FETCH_COLUMN)两次然后使用array_combine来创建数组.但是,因为它涉及两个数据库的两个调用,所以我将其作为一个选项.

还有另一种方法吗?

php mysql pdo

40
推荐指数
1
解决办法
3万
查看次数

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)
         {
            $result[$row[0]][]=$row[1];  // the simplest case for 2 columns, should add more to handle more columns

         }

         return $result;

}
Run Code Online (Sandbox Code Playgroud)

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

php pdostatement

22
推荐指数
3
解决办法
1万
查看次数

标签 统计

php ×2

mysql ×1

pdo ×1

pdostatement ×1