sumar columna array php mysql pdo

columna - fetchall() php



PDO fetchTodos los pares clave-valor del grupo en matriz assoc (2)

De vez en cuando, me meto en una situación en la que tengo una consulta similar en tipo a:

SELECT `key`, `value` FROM `settings`;

En este caso, quiero obtener una matriz asociativa, usando valores de key y value como entradas respectivas de esa matriz, por ejemplo, si la base de datos contiene: (''first_name'', ''Tom''), (''last_name'', ''Jeferson'') , la matriz debe 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 forma de hacerlo es llamando a fetchAll(PDO::FETCH_COLUMN) dos veces y luego usando 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 otra manera de hacer esto?


Para su problema hay una solución bastante lista, es decir:

$q = $db->query("SELECT `name` AS name, `value` AS value FROM `settings`;"); $r = $q->fetchAll(PDO::FETCH_KEY_PAIR);

Funciona para mí, en PostgreSQL 9.1 y PHP 5.3.8 corriendo en Windows 7 x64.


$query = $db->query("SELECT `name` AS name, `value` AS value FROM `settings`;"); $result = $query->fetchAll(PDO::FETCH_ASSOC);