Está en la página 1de 5

1

Introduccin a PostgreSQL con PHP


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#

También podría gustarte