请问关于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?