From: | "Agustin Ignacio Genoves" <agustingenoves(at)gmail(dot)com> |
---|---|
To: | "Antonio Garcia" <angarben(at)hotmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Problemas con las CONSULTAS en la base de datos |
Date: | 2007-07-05 01:17:11 |
Message-ID: | d50beba10707041817g3dd8f96at6b05babe410c5a51@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Creo que el problema es que no estas usando pg_connect y ademas el
pg_query es de la siguiente manera pg_query($conn, $query) vos lo
tenes invertido. Fijate si te ayuda eso.
Agustin
El 4/07/07, Antonio Garcia <angarben(at)hotmail(dot)com> escribió:
> Problemas con las CONSULTAS en la base de datos
>
>
> Tengo unas paginas en PHP que conectan con MySQL y funcionan muy bien.
> El tema es que necesito utilizar la extensión Postgis de Postgre y por ello
> uso Postgresql
>
> Con php conecto la base de datos perfectamente y me sale el texto de Se ha
> realizado la conecxión
>
>
> <?php
>
> $host = "localhost";
> $db = "prueba";
> $user = "juanra";
> $password = "juanra";
>
> $connection = "host=$host dbname=$db user=$user password=$password";
>
> if (!$connection) {
> die ("Could not open connection to database server");
> } else {
> echo ("Se ha realizado la conecxión");
> }
>
> Pero cuando hago pg_query ... ahí deja de funcionar.
>
> query = "SELECT * FROM lt";
> $result = pg_query($query, $connection);
> if (!$result) {
> echo "Ha ocurrido un error.\n";
> exit;
> }
>
> ?>
>
> </body>
> </html>
>
>
> devolviendo esto:
>
> Se ha realizado la conecxión
> Warning: pg_query(): supplied argument is not a valid PostgreSQL link
> resource in C:\ms4w\www\ejem07bbbConsulta base datos POSTGRES.php on line 31
> Ha ocurrido un error.
>
>
>
> Saludos,
> -----------
> Antonio García Benlloch
>
> Correo:
> angarben(at)hotmail(dot)com
> angarben(at)topo(dot)upv(dot)es
>
> Web:
> http://personales.alumno.upv.es/~angarben
>
>
> >From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
> >To: Ricardo David Carrillo Sánchez <ricardo(dot)carrillo(at)yahoo(dot)com(dot)mx>
> >CC: pgsql-es-ayuda(at)postgresql(dot)org, David Carrillo Sanchez
> ><davxoc(at)gmail(dot)com>
> >Subject: Re: [pgsql-es-ayuda] Ayuda: Como escribir cursores en plperl?
> >Date: Wed, 4 Jul 2007 16:16:21 -0400
> >
> >Ricardo David Carrillo Sánchez escribió:
> > > Hola a todos!! estuve investigando como utilizar plperl para crear
> > > funciones procedurales mediante perl,pero me surge una duda, esperando
> > > que uds, me pudieran ayudar,
> > >
> > > he tratado de escribir una funcion que me permite pasar datos de una
> > > tabla a otra, tratando de normalizarla en el camino, de lo siguiente
> > > me queda esot :
> >
> >Bueno, esta todo malo porque estas mezclando PL/pgSQL con Perl y con
> >SQL. De partida no puedes usar DECLARE, ni darle instrucciones SQL
> >directamente; el codigo que va es totalmente Perl. Mira abajo:
> >
> > > CREATE OR REPLACE FUNCTION apellidos() RETURNS text AS $$
> > > DECLARE
> > > curselect CURSOR FOR select nombrec,apel,cargo,enlace,idpgp from
> >permiso;
> > > curinsert refcursor;
> > > my $pgp=null;
> > > while($row=spi_fetchrow(curselect))
> > > {
> > > FETCH curdata INTO nombre,apell,link,gpg;
> > > @apellidos=split(/ /,apell);
> > > $pgp=(!defined gpg)?'NULL':pgp;
> > > OPEN curinsert FOR EXECUTE "INSERT INTO
> >posgrado.personal(nombre,apellidop,apellidom,cargo,idpgp,enlaceins)
> >VALUES('nombre','$apellidos[0]','$apellidos[1]','link','$pgp')";
> > > CLOSE curinsert;
> > > }
> > > CLOSE curselect;
> > > return undef;
> > > $$ LANGUAGE plperl;
> >
> >En plperl no es necesario usar cursores de esa forma. Puedes usar
> >spi_query() y spi_fetchrow(). Creo que tu ejemplo seria algo mas o
> >menos como esto
> >
> >CREATE OR REPLACE FUNCTION apellidos() RETURNS text AS $$
> > my $foo = spi_query(" select nombrec,apel,cargo,enlace,idpgp from
> >permiso");
> > while (defined $row = spi_fetchrow($foo)) {
> > spi_exec_query("insert into ... ");
> > }
> >
> >$$;
> >
> >
> >Pero lo peor es que tu ejemplo no tiene sentido hacerlo con una funcion.
> >Puedes hacer
> >
> >insert into posgrado.personal (nombre, apellidop, apellidom, ...)
> > select nombrec, split_part(apel, ' ', 1), split_part(apel, ' ', 2), ...
> > from permiso;
> >
> >y los inserta todos de una sola vez.
> >
> >Asi que si tu funcion resulta ser muy lenta, no te quejes! Ya sabes
> >como se hace rapido.
> >
> >--
> >Alvaro Herrera http://www.CommandPrompt.com/
> >The PostgreSQL Company - Command Prompt, Inc.
> >--
> >---------------------------(fin del mensaje)---------------------------
> >TIP 4: No hagas 'kill -9' a postmaster
>
> _________________________________________________________________
> ¿Estás pensando en cambiar de coche? Todas los modelos de serie y extras en
> MSN Motor. http://motor.msn.es/researchcentre/
>
> --
> ---------------------------(fin del mensaje)---------------------------
> TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net
>
From | Date | Subject | |
---|---|---|---|
Next Message | Gabriel Hermes Colina Zambra | 2007-07-05 01:46:43 | Re: ¿¿Porque PostgreSQL?? |
Previous Message | Gabriel Hermes Colina Zambra | 2007-07-05 00:47:59 | Re: ¿¿Porque PostgreSQL?? |