Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/06/2011, 11:39
Avatar de iviamontes
iviamontes
 
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 11 meses
Puntos: 209
MySQL a JSON intento de aporte

Hola a todos, es tema recurrente el pasar el resultado de una consulta mysql a json usando php, he leido que es mejor procesar las consultas lo más posible en el servidor de BD que con php, ya me dicen ustedes si es así...
por eso he pensado que la forma más optima de obtener json seria que la misma bd te devolviera los resultados en dicho formato.

Usando las funciones CONCAT() y GROUP_CONCAT() lograriamos construir el JSON directamente desde la consulta SQL.

Código:
CREATE TABLE `user`(
	`id`    int not null auto_increment,
        `name`  varchar(100),
        `email` varchar(50),
        PRIMARY KEY(id)
) ENGINE = InnoDB;
Luego insertaremos unos cuantos registros.

Código:
INSERT INTO `user` (`name`, `email`) VALUES
('Cesar', '[email protected]'),
('Maria', '[email protected]'),
('Jose', '[email protected]'),
('Albert','[email protected]');
Finalmente realizaremos la consulta que nos traera el JSON.

Código:
SELECT
    CONCAT( "[",
        GROUP_CONCAT(
            CONCAT("{name:'",`name`,"'"),
            CONCAT(",email:'",`email`,"'}")
        )
    ,"]")
AS json FROM users;
resultado:

Código:
[
    {
        name : 'Cesar',
        email: '[email protected]'
    },
    {
        name : 'Maria',
        email: '[email protected]'
    },
    {
        name : 'Jose',
        email: '[email protected]'
    },
    {
        name : 'Albert',
        email: '[email protected]'
    }
]