Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Problema con una consulta PostgreSQL en PHP

23 de octubre de 2015

Tengo un problema, estoy haciendo en una página PHP un reporte el cual tengo una base de datos PostgreSQL. De ahí me saca la información, el problema es que uso la funcion string_agg que sirve para que los valores de entrada se concatenen en una cadena, separados por delimitador.

Pero en la aplicación de mi base de datos si me sale todo bien el query pero cuando ya lo llevo a PHP dicho query, no me devuelve esos datos concatenados. Los demás datos si los devuelven. (Como que no funciona el string_agg). ¿Que podría ser?, alguna libreria habría que agregar o cual sería la solución.

Gracias de antemano.


Respuestas

#1

En esta discusión de StackOverflow un usuario pregunta lo mismo y nadie sabe contestarle por qué no funciona esa función string_agg con PHP.

Lo que si que le proponen como solución alternativa es definir una vista con la parte de la consulta que usa string_agg. No se si en tu caso esta solución será viable.

Otra posible solución sería hacer a mano con PHP lo que hace esa función. Se que no es la solución que buscas, pero en teoría debe ser muy fácil hacer que funcione de esa manera.

@javiereguiluz

23 octubre 2015, 17:04
#2

Gracias por responder, si si tengo vistas creadas pero no funciona, hacer en PHP como sería? alguna idea?.

@piocarluis

23 octubre 2015, 17:10
#3

Dices que esa función "concatena varios valores usando un delimitador". Eso también lo hace la función implode() de PHP. Así que podrías hacer esto:

// antes
$valor = string_agg($valores);
 
// ahora
$valor = pg_escape_string(implode(',', $valores));

La variable $valores tiene que ser un array y el primer parámetro que se pasa a implode() es el delimitador que quieres utilizar. En este ejemplo he usado una coma para unir los valores.

@javiereguiluz

23 octubre 2015, 17:19
#4

Listo, lo probaré, gracias por la ayuda.

@piocarluis

23 octubre 2015, 17:23