Recientemente he tenido que utilizar PostgreSQL para realizar algunos proyectos en donde laboro, principalmente por las caractersticas que ofrece PostgreSQL sobre MySQL, as que me d a la tarea de buscar informacin sobre PostgreSQL y P!P para empezar a desarrollar aplicaciones "eb utilizando ambas tecnologas# $ste peque%o tutorial te ense%ara como manipular una base de datos en PostgreSQL por medio de P!P a tra&'s de e(emplos muy sencillos# Prerrequisitos )ecesitar*s lo siguiente para seguir este tutorial+ $l ser&idor PostgreSQL instalado P!P compilado con soporte para PostgreSQL ,na base de datos y un usuario para dicha base de datos $so es todo, si necesitas ayuda para instalar PostgreSQL, lee la documentacin de PostgreSQL.com Conexin a PostgreSQL desde PHP Para empezar a usar PostgreSQL desde P!P, primero deber*s conectarte a 'l# $sto es realizado con la funcin pg_connect()# $sta funcin es muy directa y solo espera un argumento, la cadena de cone-in# La cadena de cone-in contiene toda la informacin necesaria para conectarse a la base de datos# Los argumentos &*lidos para la cadena de cone-in son el equipo, puerto, tty, opciones, nombre de la base de datos, usuario y contrase%a# )ormalmente te &as a conectar a tu base de datos de la siguiente forma+ ./ dbname es el nombre de la base de datos a la que te conectas / user es el usuario de PostgreSQL que usas para conectarte / pass"ord es la contrase%a del usuario con el que te conectas /. pg0connect12dbname3base0de0datos user3usuario pass"ord3pass"ord24 or die12)o se pudo realizar la cone-i5oacute6n+ 2#pg0last0error1446 .. pg0last0error14 regresa el 7ltimo error que haya ocurrido, de esta manera sabr*s que ocurri
Creacin de una tabla con pg_query 8 9hora creemos nuestra primer tabla# !aremos un script para ello, mostrando el uso de pg_query()# :rearemos una tabla llamada 2:ontactos2 con los campos ;nombre;,;apellidos; y ;correo;# Para hacerlo, usa la siguiente consulta+ ./ $stamos usando la consulta / :R$9<$ <9=L$ contactos / 1 nombre &archar1>?4, / apellidos &archar1>?4, / email &archar1>?4 / 4 /. pg0connect12dbname3base0de0datos user3usuario pass"ord3pass"ord24 or die12)o se pudo realizar la cone-i5oacute6n 2#pg0last0error1446 .. :one-in a la base de datos ./ ,so de la consulta /. @query 3 2:R$9<$ <9=L$ contactos 1 nombre &archar1>?4, apellidos &archar1>?4, email &archar1>?4 426 @query 3 pg0query1@query46 .. $(ecuta la consulta if1@query4 echo 2<abla :reada26 .. Aerifica si la consulta fue e-itosa elseB echo 2Ccurri5oacute6 un errorD 2#pg0last0error146 E Si ocurri alg7n error al usar este script, entonces &erifica si proporcionaste el usuario y contrase%a correctos, y &erifica que PostgreSQL este corriendo# <ambi'n se cuidadoso, e(ecuta este script una sola &ez y despu's borralo# Fe otro modo obtendr*s errores diciendo que ya e-iste una tabla llamada 2contactos2# )ota+ <ambi'n puedes usar una herramienta de administracin para e(ecutar la consulta anterior# Para ello e-isten PHPPgAdmin y WebMin Insercin de registros en tu base de datos 9hora que ya tienes una tabla, es tiempo insertar algunos registros en ella, tu base de datos debe ser parecida a esta+ Fatabase name+ :ontactos nombre G apellidos G email $s hora de usar la funcin pg0query de nue&o# $n esta ocasin guardaremos informacin dentro de nuestra base de datos# ,saremos el comando SQL ;H)S$R<; para hacerlo, su sinta-is es la siguiente+ H)S$R< H)<C nombre0tabla 1columna1, columna8,###4 A9L,$S 1&alor1, &alor8,####4 I nombre0tabla es el nombre de la tabla, en los par'ntesis puedes especificar en que columnas quieres insertar datos# $n los &alores, pondr*s lo que quieres guardar en la base de datos# de este modo H)S$R< H)<C contactos A9L,$S 1;Juan;,;Perez Perez;,;(uanperezKdominio#com;4 insertara Juan como nombre, Perez como apellidos, y (uanperezKdominio#com como direccin de email# 9hora escribamos un script para hacer esto# pg0connect12dbname3base0de0datos user3usuario pass"ord3username24 or die12)o se realiz5oacute la cone-i5oacute6n2#pg0last0error1446 @query 3 2H)S$R< H)<C contactos A9L,$S1;Juan;,;Perez Perez;,;(uanperezKdominio#com;426 @query 3 pg0query1@query46 if1@query4 echo 2Hnsercin completaD26 elseB echo 2Ccurri5oacute6 un errorD 2#pg0last0error146 E $sto debi haber hecho lo que queramos, si fallo &erfica tu consulta e intenta de nue&o# Si todo march bien, insertemos m*s registros# Fe hecho, Lpor que no hacemos un formulario para insertarlosM# Para eso debemos empezar con una formulario muy b*sico# Nform method32PCS<2O )ombre+ Ninput type32te-t2 name32nombre2ONbr .O 9pellidos+ Ninput type32te-t2 name32apellidos2ONbr .O $mail+ Ninput type32te-t2 name32email2ONbr .O Ninput type32submit2O N.formO 9hora debemos agregar los &alores reales a nuestro formulario# Primero debemos &erificar que todos los campos hayan sido llenados, y entonces insertarlos en la base de datos+ NMphp if1@0R$Q,$S<P;nombre;Q 55 @0R$Q,$S<P;apellidos;Q 55 @0R$Q,$S<P;email;Q4 .. Aerifica si todos los campos fueron llenados B pg0connect12dbname3nombre0base0de0datos user3usuario pass"ord3pass"ord24 or die12)o se pudo realizar la cone-i5oacute6n246 .. :one-in a la base de datos @query 3 sprintf12H)S$R< H)<C contactos A9L,$S1;Rs;,;Rs;,;Rs;42,@0R$Q,$S<P;nombre;Q,@0R$Q,$S<P;apellidos;Q,@0R$Q,$ S<P;email;Q46 .. Realiza la consulta SQL ./ =re&e leccin de Sprintf+ / Sprintf tomar* una cadena y le dar* forma# $n este caso uso Rs lo que significa que el siguiente parametro ser* una cadena, /. @query 3 pg0query1@query46 if1@query4 echo 2$l registro ha sido agregado26 else S echo 2Ccurri5oacute6o un error D 2#pg0last0error146 E elseB .. Si no tenemos todos los campos, mostramos el formulario MO Nform M$<!CF32PCS<2 9:<HC)32NMphp echo @0S$RA$RP;P!P0S$LT;Q6 MO2O )ombre+ Ninput type32te-t2 name32nombre2ONbr .O 9pellidos+ Ninput type32te-t2 name32apellidos2ONbr .O $mail+ Ninput type32te-t2 name32email2ONbr .O Ninput type32submit2O N.formO NMphp E MO $so es todo# Ua tenemos un formulario para insertar registros dentro de nuestra base de datos, si lees los comentarios deber*s entender completamente que hace cada parte del script# Visualiacin de los registros en la base de datos 9hora que ya podemos agregar registros a nuestra base de datos, necesitaremos &er todos los registros en la misma# $so podemos hacerlo usando el comando S$L$:< de SQL# <en en cuenta que a7n seguimos usando la funcin pg0query14# Si quisieramos mostrar todos los campos de la base de datos, podramos hacer un script que seleccionara todos 1/ en SQL4 los registros# pg0connect12dbname3base0de0datos user3usuario pass"ord3pass"ord24 or die12)o se pudo realizar la cone-in246 .. :one-in a la base de datos @query 3 2S$L$:< / TRCM contactos26 @query 3 pg0query1@query46 "hile1@ro" 3 pg0fetch0array1@query,),LL,PVSQL09SSC:44 B .. print0r1@ro"46 .. Fescomenta la lnea anterior para &er el arreglo completo echo 2)ombre+ 2#@ro"P;nombre;Q#2Nbr .O26 echo 29pellidos+ 2#@ro"P;apellidos;Q#2Nbr .O26 echo 2$WMail+ 2#@ro"P;email;Q#2Nbr .ONbr .O26 E )o te preocupes si no entiendes cada parte del script# <an solo use la funcin pg0fetch0array14 para traer los resultados de la consulta dentro de un arreglo asociati&o# Las lla&es del arreglo son nombradas despu's de los nombres de columna de la tabla# Fe este modo @ro"P;nombre;Q contendr* lo que haya en la columna 2nombre2 de nuestra tabla, simple LnoM# La &ariable @query es la consulta que quieres traer# ),LL es el n7mero de fila, cuando especificas ),LL, la funcin simplemente se saltar* ese par*metro# $l 7ltimo parametro, el que dice PVSQL09SSC:, elige que tipo de arreglo regresar*# PVSQL09SSC: tendr* arreglos con los nombres de columna como lla&es# PVSQL0),M regresar* un arreglo n7merico, y PVSQL0=C<! regresar* ambos# :omo nota final, puedes reemplazar cada uno de los echo;s por un print0r14 para &er el arreglo completo# > Actualiacin de registros Lo 7nico que nos falta para que sepas lo b*sico, es el comando update, que es bastante sencillo# Su sinta-is es+ ,PF9<$ nombre0tabla S$< nombre0columns 3 nue&o0&alor X!$R$ nombre0columna 3 algun0&alor# 9s 2,PF9<$ contactos S$< nombre 3 ;Juanito; X!$R$ apellidos 3 ;Perez Perez;2 pondra el &alor ;Juanito; en los registros donde ;Perez Perez; sean los apellidos# Conclusin CY, si me seguiste hasta aqu, probablemente estes pensando que PostgreSQL no es muy diferente de MySQL, es &erdad# :omo lo di(e al principio de este tutorial, este es un tutorial =ZSH:C# Si llegaste hasta aqu sin ning7n problema, te recomiendo que leas la documentacin de PostgreSQL y &eas algunas de sus caractersticas# !ay un mundo entero m*s all* de MySQL#