• Publicidad

Problemas con select en base de datos

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Problemas con select en base de datos

Notapor danimera » 2010-10-15 20:49 @909

Resulta que tengo un módulo con CGI-App; de ahí hago una consulta como esta:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $dbh2 = DBI->connect("DBI:CSV:f_dir=plugins/shoppingcart/data") or die "Cannot connect: " . $DBI::errstr;
   my $productos = $dbh2->selectall_arrayref("SELECT  * FROM productos ORDER By id Desc",{ Slice=>{} });
    return "<pre>". Dumper $productos;
 
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Perfecto, funciona... pero tengo esta línea en el módulo CGI-App...
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $content_plugin = require $self->cfg('plugins')."/".$datos->param('nm')."/".$datos->param('nm').".pm" or die "No se encuentra el modulo";
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

llama a un módulo y este tiene la misma consulta de arriba, pero no me regresa el contenido de la BD... Obtengo $VAR1 = undef;

No sé qué podría ser, la verdad... :( Perl no me quiere, o lo estoy usando mal :P
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Publicidad

Re: Problemas con select en base de datos

Notapor explorer » 2010-10-16 08:49 @409

¿$datos->param('nm') contiene un valor correcto? ¿La unión de $self->cfg('plugins')."/".$datos->param('nm')."/".$datos->param('nm').".pm" forma una ruta correcta a un fichero existente? ¿Sale el error "No se encuentra el modulo"? ¿Qué es lo que sale en pantalla?

A la hora de depurar, usa el truco de ir sacando los valores que aplicación está usando.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problemas con select en base de datos

Notapor danimera » 2010-10-16 10:11 @466

Claro, todo está funcionando bien, el módulo es encontrado, de hecho puedo crear tablas, y hacer inserts... lo que no puedo es obtener los datos :(

El plugin funciona bien, puedo procesar todo, pero lo único es que no me obtiene los datos. Probé con DBIx::Class y me funciona bien, pero así con DBI sólo, no lo logro.

Algo raro que noto es que estoy trabajando localmente... cuando subo al server tengo algo así.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $dbh2 = DBI->connect("DBI:CSV:f_dir=/home/programa/public_html/admin/plugins/ShoppingCart/data") or die "Cannot connect: " . $DBI::errstr;

       $sth = $dbh2->prepare("SELECT  * FROM productos");
       $sth->execute() or die "Cannot execute: " . $dbh2->errstr();
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Obtengo este error cuando uso prepare() y execute():
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Cannot execute: Execution ERROR: Cannot open /home/programa/public_html/admin/productos: No such file or directory (2)
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Observa las rutas de los archivos: no tiene lógica pues el DBI conecta a un directorio y el error me dice que busca productos en otro... :D

Pero, localmente, el resultado de
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$dbh2->selectall_arrayref("SELECT  * FROM productos ORDER");
return "<pre>". Dumper $productos;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
es
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
$VAR1 = undef;
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Re: Problemas con select en base de datos

Notapor explorer » 2010-10-16 10:21 @473

¿Dónde asignas el valor a la variable $productos? No lo veo...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problemas con select en base de datos

Notapor danimera » 2010-10-16 10:27 @477

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $productos = $dbh2->selectall_arrayref("SELECT  * FROM productos ORDER By id Desc",{ Slice=>{} }); #ahí asigno el valor a variable ^^


        $sth = $dbh2->prepare("SELECT  * FROM productos");
        $sth->execute() or die "Cannot execute: " . $dbh2->errstr();
        $hash_ref = $sth->fetchall_arrayref;

       }
        return "<pre>". Dumper $hash_ref;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


No sé qué rayos me ha pasado... $hash_ref sí contiene los valores, sí me obtuvo los datos de la BD, pero $productos no me devuelve nada, y el problema ahora es que si uso execute() en el web hosting, ya vimos el error que tengo...
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Re: Problemas con select en base de datos

Notapor explorer » 2010-10-16 11:01 @501

Cuidado... estoy viendo una llave de cierre justo antes del Dump... en ese punto, $productos no vale nada... porque es una variable local (está declarada con my() ).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problemas con select en base de datos

Notapor danimera » 2010-10-16 11:24 @516

:x ¡Qué frustración...!
Eso era todo, ¡cómo pudo pasarme eso ha...! ¡Qué mal programador soy...! No merezco ser llamado programador Perl, es una blasfemia para la comunidad, :( Gracias de nuevo, explorer...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if($self->param('categoria')){

       }else{

      my $productos = $dbh2->selectall_arrayref("SELECT * FROM productos ORDER By id Desc",{ Slice=>{} }); #he aqui el problema declaracion local

        $sth = $dbh2->prepare("SELECT  * FROM productos");
        $sth->execute() or die "Cannot execute: " . $dbh2->errstr();
        $productos2 = $sth->fetchall_hashref("id") ;

       }
          return "<pre>". Dumper $productos;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Re: Problemas con select en base de datos

Notapor explorer » 2010-10-16 11:38 @526

Al contrario...

AHORA eres un mejor programador de Perl que hace un hora, porque has aprendido lo que significa "contexto" de las variables.

AHORA sabes el poder que tiene crear variables dentro de contextos (llaves) que solo van a existir dentro de ellos, sin afectar a las variables de afuera.

AHORA sabes lo importante que es decidir qué variables deben ser globales, cuáles locales, qué nombres darles, etcétera. Vamos, prestar atención un poco más a los detalles, que a su vez te da más libertad a la hora de sacarte variables de la manga cuando te venga en gana, porque sabes en qué punto dejarán de existir.

¡Enhorabuena!
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 8 invitados