De vez en cuando, yo entrar en una situación en la que tengo una consulta similar en especie a:grupo DOP fetchAll en matriz asociativa
SELECT `key`, `value` FROM `settings`;
En este caso, quiero tener una asociativo array, usando valores de key
& value
como entradas respectivas de esa matriz, por ejemplo si la base de datos contenía: ('first_name', 'Tom'), ('last_name', 'Jeferson')
, la matriz debería ser array('first_name' => 'Tom', 'last_name' => 'Jeferson');
.
La forma más común de hacer esto es:
$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'];
}
* La otra manera de hacer esto es llamando fetchAll(PDO::FETCH_COLUMN)
dos veces & a continuación, utilizando array_combine
para crear la matriz. Sin embargo, como implica dos llamadas dos a la base de datos, dejo esto como una opción.
¿Hay alguna otra manera de hacerlo?
Genial! No sabía acerca de esta constante. Aparentemente, la página de documentación de búsqueda de PDO no los incluye a todos. Sin embargo, el bit 'AS name, AS value' es redundante. – Gajus
Además, no sabía, mi IDE lo destacó por mí ...) – devdRew
¿Hay alguna manera de usar 'PDO :: FETCH_KEY_PAIR' y tener el resultado como un' objeto' al mismo tiempo? – adamj