【问题标题】:How to fetch data using PDO in the format [col1=>[col2=>col3,col2=>col3]]?如何使用 PDO 以 [col1=>[col2=>col3,col2=>col3]] 格式获取数据?
【发布时间】:2018-10-13 15:17:51
【问题描述】:

我有一个名为 bid_lvl_descs 的 MySQL 表,其中包含 bid_type、lvl、desc 列

Bid_type 和 lvl 一起总是唯一的,而 desc 将是唯一的,但在技术上可能不是唯一的。 示例数据:

+----------+-----+---------------------+
| bid_type | lvl |        desc         |
+----------+-----+---------------------+
|        9 |   1 |  Blabla             |
|        9 |   2 |  bla ba bla         |
|        9 |   3 |  bla bla bla bla    |
|        9 |   4 |  Bllsllsabablalllll |
|        7 |   1 |  bla                |
|        7 |   2 |  blabla             |
|        7 |   3 |  blablabla          |
|        7 |   4 |  Bbllaallssl        |
+----------+-----+---------------------+

我想选择数据并将其保存在 PHP 数组中,以便在需要时通过简单的cached_arr[ bid_type ] [ lvl ] 轻松访问和缓存

array {
          9 array {
1 => 'bla',
2 => 'blabla', 
3 => 'blablabla',
4 => 'blablablabla'
}
         7 array {
1=> ...
2=>
3=>
4=>... 
}
//An so on
}

我试过PDOStatement::fetchAll(PDO::FETCH_GROUP),但它创建的数组格式比必要的稍微复杂一些。有什么建议吗?

代码:

<?php
echo var_dump($db->run('SELECT bid_type,lvl,desc FROM bid_lvl_descs')->fetchAll(PDO::FETCH_GROUP);

给出以下数组:

Array {
9 array {
0 array {
'lvl'=>1,
'desc'=>'bla'
}
}
7 array {
0 array {
desc => 'bla'
lvl=1
}
// ... And so on
}
}

【问题讨论】:

  • 你能告诉我们你尝试的代码吗?
  • @Script47 当然。
  • @Script47 我添加了代码。

标签: php mysql pdo fetchall pdostatement


【解决方案1】:

你可以用 PHP 做到这一点:

$results = $db->run('SELECT bid_type,lvl,desc FROM bid_lvl_descs')->fetchAll();
$output = [];
foreach($results as $result){
    $output[$result['bid_type']][] = $result;
}

【讨论】:

  • 谢谢!如果没有其他解决方案,那么我会接受这个答案。但我也希望我可以使用一些 PDO 获取模式或其他东西并避免循环。
猜你喜欢
  • 2015-05-15
  • 1970-01-01
  • 2022-06-15
  • 2018-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多