Re: pasar variables array de php a funcion plpgsql

From: jam1138 <jam1138+pgsql(at)gmail(dot)com>
To: "Carlos Mendez" <lucas1850(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: pasar variables array de php a funcion plpgsql
Date: 2008-04-03 18:43:08
Message-ID: d730cbcc0804031143uc16daacw4465f082213eda6d@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Saludos Carlos.

Verás, no tengo experiencia con funciones en Postgres (pásame un
enlace ¿no? ;-)) pero, al mandar la variable como lo haces ahora, solo
estas indicando es "un Array de PHP", entonces tu función en plpgsql
debería poder tratar ese tipo de valor... cosa que no sucede y dudo se
pueda y no veo por qué tendría que ser.

Entonces, si entiendo bien esto, lo que deberías hacer es construir tu
query tal cual la ejecutas desde psql. Puedo sugerir algo como:

$matriz=array('dfs','sdf','bc'); // Tu array
$pgMatriz = "array['".implode("', '", $matriz)."']"; // La "transformación
$query = "select mostrar_array(".$pgMatriz.")"; // Obtienes: select
mostrar_array(array['dfs', 'sdf', 'bc'])

Espero te sirva, y es en serio lo del enlace :-P. Nos vemos.

2008/4/3 Carlos Mendez <lucas1850(at)gmail(dot)com>:
> Hola, que tal,
> estoy intentado pasar una variable tipo array desde php a funcion plpgsql
> tengo el siguiente script:
>
> <?php
> include_once('conexion_pgsql.php');
> $matriz=array('dfs','sdf','bc');
> print_r($matriz);
> $query = "select mostrar_array($matriz)";
> $datos = $conn1->Execute("$query");
> ?>
>
> el error que me muestra es el siguiente:
>
> (postgres7): select mostrar_array(Array)
>
> Warning: pg_query() [function.pg-query]: Query failed: ERROR: syntax error
> at or near ")" at character 27 in C:\Archivos de programa\Apache
> Group\Apache2\htdocs\adodb\drivers\adodb-postgres7.inc.php on line 113
> -1: ERROR: syntax error at or near ")" at character 27
>
> supongo que debe ser la sintaxis a algo parecido, porque cuando ejecuto
> desde el psql funciona bien:
>
> base3=# select mostrar_array(array['dfs','sdf','bc']);
>
> como se ve existe una diferencia entre php y pgsql al declarar los array
> en php: array('dfs','sdf','bc') se utiliza ()
> en pgsql: array['dfs','sdf','bc'] se utiliza []
>
> como puedo pasar la variable tipo array $matriz a plpgsql,
> gracias de antemano por la ayuda,
> saludos.
>
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Fabio Arias 2008-04-03 19:01:32 CONSULTA DE FECHAS
Previous Message Alvaro Herrera 2008-04-03 17:07:26 Re: estas caracteristicas de mysql estan en postgresql