相关疑难解决方法(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 - PDO获取结果集,列为索引,列为值

嗨,我有一个具有以下结构的表

+-------------+------+
| date        | price|
+-------------+------+
| 2014-02-19  |   34 |
| 2014-02-20  |   30 |
| 2014-02-21  |   28 |
+-------------+------+
Run Code Online (Sandbox Code Playgroud)

目前PDO :: FETCH_ASSOC返回一个像这样格式的关联数组

array(
  0=> array(
    "date" =>  2014-02-19 ,
    "price" => 34
),
 1=> array(
    "date" =>  2014-02-20 ,
    "price" => 30
),
 2=> array(
    "date" =>  2014-02-21 , 
    "price"=> 28
 )

)
Run Code Online (Sandbox Code Playgroud)

顺便说一句,这是好的,但我正在寻找一种方法来返回值为key =>值对,键是日期,价值是价格.这样我就可以使用日期作为键快速访问价格值,从而大量减少计算量,因为我必须处理数百万行,并且在循环中访问每个值只会导致程序进一步减速.

所以我正在寻找PDO :: fetchALL()来返回

array(
"2014-02-19" => 34,
"2014-02-20" => 30,
"2014-02-21" => 28
)
Run Code Online (Sandbox Code Playgroud)

我的意思是我可以使用foreach循环轻松构建它,但在我的情况下它不可能,因为它会导致巨大的性能下降.因此,如果任何人能指出我正确的方向,那将是非常有帮助的.我会感谢任何帮助或提示.

谢谢,Maxx

php mysql pdo

2
推荐指数
1
解决办法
4195
查看次数

标签 统计

mysql ×2

pdo ×2

php ×2