当前位置:编程学习 > CGI >>

请问关于perl+cgi分页显示mysql数据库的问题

请教各位大侠,我用perl cgi写了一个连接mysql的代码,现在有的数据库里有1000多条记录,同时显示在一个网页上非常慢,想请大侠帮我修改以下代码,每页显示100条,并且每一页有链接: #!/usr/bin/perl use strict; use DBI; use CGI; print "Content-type:text/html\n\n"; print<<BEGIN; <html> <head> <title>windows环境变量</title> </head> <body> BEGIN my $cgi=new CGI; my $database=$cgi->param("database"); # Connect to target DB my $dbh = DBI->connect("DBI:mysql:database=$database;host=localhost","root","4114", {'RaiseError' => 1}); # query my $content=100; my $page=1; my $sqr = $dbh->prepare("SELECT * FROM alter_splicing limit $content"); $sqr->execute(); print "<table border='1' width=700>"; print "<tr bgcolor=#6699FF><td>est_id\n</td>"; print "<td>position\n</td>"; print "<td>sbjct\n</td>"; print "<td>est_numbers\n</td>"; print "<td>type\n</td>"; print "<td>geneid\n</td></tr>"; while(my $ref = $sqr->fetchrow_hashref()) { my $query=$ref->{'est_id'}; my $sbjct=$ref->{'sbjct'}; print "<tr><td align='left'>$query\n</td>"; print "<td align='right'>$ref->{'position'}\n</td>"; print "<td align='left'><a href=info.cgi?database=$database&sbjct=$sbjct&query=$query>$sbjct\n</a></td>"; print "<td align='right'>$ref->{'est_numbers'}\n</td>"; print "<td align='left'>$ref->{'type'}\n</td>"; print "<td align='right'>$ref->{'geneid'}\n</td></tr>"; } print "</table>"; $dbh->disconnect(); print<<END; </body> </html> END
补充:可否帮忙改一下
答案:SELECT * FROM alter_splicing limit $content
这个语句貌似有问题。limit的用法不对。
SELECT * FROM alter_splicing limit 100,10;
第一个参数是从哪条开始,后面的是多少条,上面的意思就是从100开始取后面10条记录。

CGI启动都是很慢的,系统要独立一个进程来处理,如果多刷几次的话,会更慢。

建议使用fastcgi,或者mod_perl来写。

上一个:您试图从目录中执行 CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序。
下一个:什么是php 的safe mode? php.exe? php-cgi.exe? php-win.exe?

更多图片编程知识:
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,