Join us!
Forgot your password?
aarkerio 1459
vedrisha 268
asarch 249
vendaval 232
saidjose 118
pakal 85
Almsx 74
dmesg 70
tonathiu 63
blacksoul 60

Una suite para ti
Una suite para ti
Chico tímido busca... bueno... estooo... no, bueno... nada... no importa...
Anónimo
Blogger: asarch


WWW \ Tips de PEAR: CURRVAL, getOne y getRow
WWW
Tips de PEAR: CURRVAL, getOne y getRow
Warning (512): Method GagsHelper::googleAds does not exist [CORE/Cake/View/Helper.php, line 165]

Este artículo ha sido consultado en 957 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: 2009-08-20 00:32:14-05

Printable version

blog comments powered by Disqus
Que estas haciendo?
humusanitohumusanito está:
Como Vimmer que soy ya olvidé lo (muy) poco que sabía de emacs
6 days, 1 hour ago

chilicuilchilicuil está:
administrador de sistemas junior libre xD
1 week, 4 days ago

chilicuilchilicuil está:
yup!, actualización del editor de la MN =)
2 weeks, 5 days ago

saidjosesaidjose está:
Escuchando la segunda sura del Islan
4 weeks ago

mandrakemandrake está:
Que pex banda
4 weeks, 1 day ago

asarchasarch está:
Eso lo tiene que hacer el admin (o usar un servidor externo)
4 weeks, 1 day ago

Que estuvimos haciendo >>

Quickvote

Esta año quiero:

IdUna nueva laptop
Una nueva tablet
Un nuevo cell
Una nueva vieja

Problemas de Lenguaje en niños
25913 lecturas
Anticoncepción de Emergencia
22206 lecturas
Sinapsis y exocitosis
15400 lecturas
Rompiendo cualquier clave WEP en unos pocos minutos
15253 lecturas
Sexualidad infantil y juvenil
14703 lecturas
Interrupción de Embarazo
12133 lecturas
Evolución filética en las hepáticas
10301 lecturas
Mi primer CakePHP, mmmmm cakeee
9878 lecturas
CakePHP II Active Record
7651 lecturas
Cómo hacer un Bonsai?
7493 lecturas
Go topEste trabajo está licenciado bajo la MonoNeurona Commons License. 2002-2012 © :: Colectivo de Programacion MonoNeurona.org ::
The Queen is here Mozilla Firefox The Best DataBase CakePHP Framework XHTML GNU Hacker Chipotle Software