我正在使用Dancer框架在Perl中编写一个Web应用程序.数据库是sqlite,我使用DBI进行数据库交互.
我对select语句很好,但我想知道有没有办法计算选定的行.
我有
get '/' => sub {
my $content = database->prepare(sprintf("SELECT * FROM content LIMIT %d",
$CONTNUM));
$content->execute;
print(Dumper($content->fetchall_arrayref));
};
Run Code Online (Sandbox Code Playgroud)
如何在不发出其他查询的情况下计算结果中的所有项目?
我想以这种方式实现的是每页显示30个项目并知道将有多少页面.当然我可以运行SELECT COUNT(*)foo bar,但它看起来不对,对我来说是多余的.我正在寻找或多或少的一般,干,而不是太沉重的数据库方式这样做.
任何SQL或Perl hack或暗示我应该阅读的内容将不胜感激.
//我知道使用字符串连接查询是不好的
你必须以艰难的方式去做:一个查询来获取计数,另一个查询获得你想要的行集:
my $count = $database->prepare('SELECT COUNT(*) FROM content');
$count->execute();
my $n = $count->fetchall_arrayref()->[0][0];
my $content = $database->prepare('SELECT * FROM content LIMIT ?');
$content->execute($CONTNUM);
#...
Run Code Online (Sandbox Code Playgroud)