Как получить данные, используя PDO в формате [col1 = & col> = col3, col2 = & col3]]?

У меня есть MySQL таблица с именем bid_lvl_descs со столбцами 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
}
}

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;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]