Visualizza come assoc
Per il manuale: http://php.net/manual/en/pdostatement.fetchall.php
fetch_style
Controlli il contenuto della matrice restituita come documentato in PDOStatement :: fetch(). Il valore predefinito di PDO :: ATTR_DEFAULT_FETCH_MODE (valore predefinito PDO :: FETCH_BOTH)
Per restituire un array costituito da tutti i valori di una singola colonna dal set di risultati, specificare PDO :: FETCH_COLUMN. Puoi specificare quale colonna vuoi con il parametro indice-colonna.
Per recuperare solo i valori univoci di una singola colonna dal set di risultati, bitwise-OR PDO :: FETCH_COLUMN con PDO :: FETCH_UNIQUE.
Per restituire un array associativo raggruppato in base ai valori di una colonna specificata, bitwise-OR PDO :: FETCH_COLUMN con PDO :: FETCH_GROUP.
L'ultimo bit è la chiave. Non sembra essere completamente documentato (che ho potuto trovare), ma invece di PDO :: FETCH_COLUMN, è possibile combinare PDO :: FETCH_ASSOC DOP :: FETCH_GROUP per ottenere il risultato desiderato:
$PDOstmt->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP)
Così , data i dati di cui sopra:
$stmt = $PDO_obj->prepare('select * from brands');
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP);
d($result);
risultati in:
array (6) [
'1' => array (1) [
array (2) [
'name' => string (10) "Solidfloor"
'url' => string (10) "solidfloor"
]
]
'2' => array (1) [
array (2) [
'name' => string (9) "Quickstep"
'url' => string (9) "quickstep"
]
]
'4' => array (1) [
array (2) [
'name' => string (10) "Cleanfloor"
'url' => string (10) "cleanfloor"
]
]
'5' => array (1) [
array (2) [
'name' => string (12) "Blue Dolphin"
'url' => string (12) "blue-dolphin"
]
]
'6' => array (1) [
array (2) [
'name' => string (5) "Krono"
'url' => string (5) "krono"
]
]
'8' => array (1) [
array (2) [
'name' => string (7) "Meister"
'url' => string (7) "meister"
]
]
]
(d() è solo una funzione di debug a portata di mano dalla libreria Kint, come var_dump() o print_r())
0.123.516,41 mila
Si noti che la colonna utilizzata per indicizzare l'array sarà sempre la prima colonna dei risultati, quindi è possibile modificare l'istruzione select per scegliere la colonna desiderata. E si noti inoltre che la colonna indicizzata verrà eliminata dalla matrice di ogni riga; per ovviare a ciò, è possibile aggiungere la colonna due volte alla propria istruzione select (ad esempio, select id, brands.* from brands
, ecc.).
Ci sono più parametri documentati qui: http://php.net/manual/en/pdostatement.fetch.php, come PDO :: FETCH_UNIQUE per assicurarsi che ogni indice venga utilizzato una sola volta.
$ st-> fetchAll (PDO :: FETCH_ASSOC | PDO :: FETCH_GROUP); Questo ha fatto il lavoro, grazie per l'aiuto! –