[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