[Perl] problemas cgi+dbi

Juan Carlos Lopez jclp77@yahoo.com.mx
Tue, 27 May 2003 13:01:13 -0500 (CDT)


Gracias Gunnar, pero aun asi la linea donde ejecuto la
consulta es la siguiente:

my $dbh = DBI->connect('dbi:ODBC:familia','','') ||
die "<P>\nError al abrir la base datos:
$DBI::errstr</P>\n";

my $sth = $dbh->prepare ($post_consulta);
$sth->execute();

my $table = $sth->fetchall_arrayref(); 
my($i, $j); 

####MANDO A IMPRIMIR LOS DATOS EN LA PANTALLA

for $i ( 0 .. $#{$table} ) { 
	print "<TR>";
	for $j ( 0 .. $#{$table->[$i]} ) { 
        	print "<TD>$table->[$i][$j]</TD>"; 
    	} 
	print "</TR>";
} 
$sth->finish();

Al parecer cuando mando a imprimir la tabla HTML con
los registros (alrededor de 7692) el navegador no
soporta la cantidad de datos a imprimir y hace un
refresh y por lo tanto pierde la cadena
$post_consulta; por lo que ya no puede ejecutar la
consulta y envía en error de ejecución.

Lo más raro es que en vez de imprimir los datos en el
navegador los envío a un archivo con la extensión html
no tiene ningún problema e imprime los 7692 registros
con la tabla.


 --- Gunnar Wolf <gwolf@gwolf.cx> escribió: > Juan
Carlos Lopez dijo [Tue, May 27, 2003 at
> 08:33:17AM -0500]:
> > Gracias Mauricio por la idea, quite las lineas del
> > script que maximizaba la pantalla y aun asi,
> cuando
> > realiza la consulta el navegador muestra los
> datos,
> > hace un refresh (o varios) y pierde los parámetros
> de
> > consulta y me muestra que no se ha podido realizar
> la
> > consulta (como estoy utilizando use CGI::Carp
> > qw(fatalsToBrowser);) mostrandome el siguiente
> error: 
> > 
> > Software error:
> > Can't call method "execute" on an undefined value
> at
> > C:/Program Files/Apache
> > Group/Apache2/cgi-bin/consulta_1.cgi line 233
> 
> Revisa en tu código dicha línea - Al parecer la
> creación de un objeto
> (supongo que un statement handler, el tradicional
> $sth) no es exitosa y
> en vez de tener un sth en la variable tienes undef.
> Has de tener algo así:
> 
> (...)
> $sth = $dbh->prepare($sql);
> $sth->execute;
> (...)
> 
> Te sugiero cambiar la línea en la que creas tu $sth
> por:
> 
> $sth = $dbh->prepare($sql) or die "No pude crear el
> sth: ",$dbh->errstr;
> 
> El método errstr del database handler (dbh) te
> entrega el último mensaje
> de error producido por la BD.
> 
> Saludos,
> 
> -- 
> Gunnar Wolf - gwolf@gwolf.cx - (+52-55)5630-9700
> ext. 1366
> PGP key 1024D/8BB527AF 2001-10-23
> Fingerprint: 0C79 D2D1 2C4E 9CE4 5973  F800 D80E
> F35A 8BB5 27AF 

_________________________________________________________
Do You Yahoo!?
La mejor conexión a internet y 25MB extra a tu correo por $100 al mes. http://net.yahoo.com.mx