Tema: Php a Perl
Ver Mensaje Individual
  #12 (permalink)  
Antiguo 18/06/2006, 22:09
kidd
 
Fecha de Ingreso: mayo-2003
Mensajes: 328
Antigüedad: 21 años, 10 meses
Puntos: 0
Hola:

Hablando del temas, aquí vienen unos tips que no puse en el tutorial pero que les podrían servir para el futuro.

Las conexiones las base de datos son algo costosas en cuanto a recursos, así que cuando realices una conexión no la finalices sino hasta que hayas terminado de ejecutar todos los querys que deseas realizar.

Lo siguiente es en cuanto al uso de nuestro objeto DBI, en este caso el que inicializamos con nuestra variable $sth.

Muy a menudo sucede que deseamos ejecutar el mismo query una y otra vez por medio de un loop. Podríamos estar tentados a hacer algo así:

Código:
use strict;
use AUTO;


my @frutas = ('platano', 'manzana', 'pera');

my $dbh = AUTO->connect();


    for my $fruta(@frutas){

        my $sth = $dbh->prepare('SELECT COUNT(*) FROM frutas WHERE fruta=?') or die("Couldn't prepare statement: " . $dbh->errstr);
        $sth->execute($fruta) or die("Couldn't execute statement: " . $sth->errstr);
        my $conteo = $sth->fetchrow_array();
        $sth->finish;

        print "$fruta aparece $conteo veces\n";

    }

$dbh->disconnect;
En el ejemplo estoy suponiendo que usamos un módulo como el tuyo. Parece estar bien, pero el chiste del prepare() que ejecutamos al momento de inicializar la variable $sth, es el poder preparar un query que podremos rehúsar. En este caso la sintáxis correcta sería:


Código:
        my $sth = $dbh->prepare('SELECT COUNT(*) FROM frutas WHERE fruta=?') or die("Couldn't prepare statement: " . $dbh->errstr);

    for my $fruta(@frutas){

        $sth->execute($fruta) or die("Couldn't execute statement: " . $sth->errstr);
        my $conteo = $sth->fetchrow_array();

        print "$fruta aparece $conteo veces\n";

    }

        $sth->finish;

$dbh->disconnect;
Ahora si estamos haciendo un uso "correcto" de nuestro query, lo preparamos y ya podemos usarlo las veces que nosotros querramos.

Bueno, estos son mis dos centavos de la noche.


Saludos
__________________
Uriel Lizama, Perl Developer

Aprende Perl en Perl en Español.