Custom Search
Bloggers Activos
Emacs como IDE para CakePHP aarkerio
La Negación del Viaje Lunar tonathiu
Porque los mononeurones si tenemos madre! blacksoul
BrunoFerías thot
The Art vendaval
Aclimatación extraterrestre ¿para qué? ahuramazdah
¿A que le tienes miedo? teosho
Sobre nazis, terror y medios tonathiu
Amenazas a la cuarta dimensión ¿de veras? ahuramazdah
Tarjeta Broadcom BCM94311MCG rev 02 teosho
Last Download
Segunda Fundación
Segunda Fundación
Pidiendo OpenSolaris 2008.5
vendaval
Sospechosismo
aarkerio
Slackware 12.1 Final
vendaval
OpenBSD 4.3 Liberado
vendaval
Linux hot girl
aarkerio
Jaime Maussan da por auténtico video trucado del chupacabras hecho en Blender 3D
asarch
Sistema Infalible
ordbal
Calderón puede ser sujeto a juicio político, sostiene Carrancá
tonathiu
Histórico
aarkerio
La desnutrición en México
aarkerio
Google Groups Karamelo
Visit this group
GNU/Linux
GNU/Linux
Hacktivismo
Hacktivismo
Debian
Debian
NetBSD
NetBSD
WWW
WWW
Guia Linux
Guia Linux
Server Side
Server Side
Ofimatica
Ofimatica
Despabilando...
Despabilando...
Mundo Maya
Mundo Maya
Literatura
Literatura
Agora
Agora
Psicologia
Psicologia
Economia
Economia
Ambientalismo
Ambientalismo
Desarrollo
Desarrollo
Biologia
Biologia
No compres, adopta
No compres, adopta

Hacktivism

LinuxChix button

WWW \ Tips de PEAR: CURRVAL, getOne y getRow
WWW
Tips de PEAR: CURRVAL, getOne y getRow

Este artículo ha sido consultado en 507 ocasiones.

Este es un anexo al Tutorial de PHP. Revíselo si no sabe como conectarse a PostgreSQL con PEAR.

Introducción

Muchas veces la lógica de la aplicación nos obliga a guardar un grupo de datos en dos tablas separadas y relacionadas por el ID de la primera tabla. Es decir, debemos insertar algunos datos en la tabla_uno e inmediatamente después insertar el resto de los datos en la tabla_dos con el ID de la primera tabla como "liga". Generalmente el ID proviene de una secuencia que inicializamos con el tipo "serial" cuando creamos la tabla. Por ejemplo:

CREATE TABLE residentes (
id serial,
nombre varchar(100),
email varchar(60),
fecha_venc date
);

Creará la secuencia residentes_id_seq. Si queremos insertar un registro y conocer el ID de este registro recientemente insertado, podemos usar la función getOne() de PEAR y el comando CURRVAL de PostgreSQL. getOne() se usa cuando sabemos que el query nos regresará un sólo valor. Note que el valor que nos regresa getOne() no es un array, sino una variable simple:

$sql="INSERT INTO residentes VALUES (NEXTVAL('residentes_id_seq'), 'Roberto Carmona', 'robert@gmail.com', '10-05-2008')";

$conn->query($sql); //insertamos

$query="SELECT CURRVAL('residentes_id_seq')";

$id = $conn->getOne($query); //El currval actual

Con esto ya tenemos el ID de la secuencia y podemos insertar en la segunda tabla. Fácil y divertido ¿no?


Recuperar un sólo registro

Generalmente en PEAR usamos la funcion query(), la cual nos regresa un objeto $result y a su vez debemos hacer un while->Array() con este objeto para pintar los registros de la tabla. Esto está bien para un "SELECT * FROM tabla", sin embargo, es un proceso muy ineficiente si lo que deseamos es ir por un registro único de la tabla, como sucede en:

$query="SELECT * FROM residentes WHER id = $_GET['id']";

En estos casos debemos usar la función getRow():

$Row =& $conn->getRow($query, array(), DB_FETCHMODE_ORDERED);

if (DB::isError($Row))
   die($Row->getMessage());

Note que ya no es necesario la variable intermediaria $result, en lugar de eso, getRow() nos regresa directamente un array único con los valores del registro. PEAR Rulezz!! ;-) .

Conclusión

No sólo son las clases, existen cientos de funciones avanzadas en PEAR que son subutilizadas por el eterno problema de PEAR: la falta de documentación. Sin embargo, vale la pena interesarse e investigar las librerías PEAR por el hecho de que es un proyecto resultado de las necesidades reales y reiterativas de los desarrolladores actuales. Si tiene una tarde libre, revise todo lo que PEAR tiene para usted. ¡Hasta el próximo Tip!


Autor
Manuel Montoya es psicólogo y vive en la Ciudad de México. Desde 1998 se dedica a la consultoría de sistemas abiertos. Ha desarrollado aplicaciones Web para American Express, Bancomext, Aeroméxico y Ford. Actualmente trabaja en el Instituto de Investigaciones Biomédicas de la UNAM usando Python, PostgreSQL y PHP sobre NetBSD, además prepara el café de las mañanas. Jedit.org y WindowMaker son su editor y escritorio favoritos.
Manuel Montoya

Última actualización: 2007-04-29 10:56:59-05

Printable version

Add comment:



Captcha




Que estas haciendo?
scarecrowscarecrow está:
Du hast?
2 hours, 16 minutes ago

der_teufelder_teufel está:
Ich habe einen Kater, aber nicht so schlecht...
9 hours, 50 minutes ago

rnstuxrnstux está:
Y yo un Abrazo.
1 day, 9 hours ago

saidjosesaidjose está:
Dandole su habrazote a mi santa madre que me soporta
1 day, 11 hours ago

dsquiddsquid está:
esperando a que este el pozole
1 day, 13 hours ago

asarchasarch está:
He cambiado NetBSD por Fedora 8, es que era muy "caliente"
1 day, 23 hours ago

Que estuvimos haciendo >>
Chipotle Software

En tu equipo tienes:
Sólo Windows
Windows y Linux
Sólo Linux
Linux y un BSD
Solaris, linux y BSD
Sólo MacacOS
Rapiditas
Problemas de Lenguaje en niños
10408 lecturas
Sexualidad infantil y juvenil
9165 lecturas
Anticoncepción de Emergencia
7832 lecturas
Rompiendo cualquier clave WEP en unos pocos minutos
6915 lecturas
Sinapsis y exocitosis
6224 lecturas
Mi primer CakePHP, mmmmm cakeee
5257 lecturas
Evolución filética en las hepáticas
4697 lecturas
BASH y Primeros Comandos
4010 lecturas
CakePHP II Active Record
3741 lecturas
Cómo convertirse en hacker
3618 lecturas
Add to Technorati Favorites

ir arriba
Un hombre sin educación, es la caricatura de sí mismo. Goethe

The Queen is here Mozilla Firefox The Best DataBase CakePHP Framework XHTML GNU Hacker Chipotle Software

Too Cool for Internet Explorer