perl – 如何检查数据库查询是否会返回结果?
我们的网站使用Perl为人力资源人员提供了一个简单的机制,可以将空缺发布到我们的网站.它是由第三方开发的,但是它们很久以来就被触碰了,遗憾的是我们内部没有任何Perl技能.当营销人员规避他们的内部IT团队时,就会发生这种情况!
我需要对此应用程序进行简单的更改.目前,职位空缺页面上写着“我们目前有以下职位空缺:”,无论是否有职位空缺!因此我们想要更改它,以便仅在适当的时间显示此行. 显然,我可以开始学习一点Perl,但我们已经在计划一个替换站点,它肯定不会使用Perl.因此,对于具有这些技能的人来说,解决方案将是微不足道的,我想我会要求一些有针对性的帮助. 以下是列出职位空缺的程序的开始. sub list { require HTTP::Date; import HTTP::Date; my $date = [split /s+/,HTTP::Date::time2iso(time())]->[0]; my $dbh = DBI->connect($dsn,$user,$password) || die "cannot connect to $database: $!n"; my $sql = <<EOSQL; SELECT * FROM $table where expiry >= '$date' order by expiry EOSQL my $sth = $dbh->prepare($sql); $sth->execute(); while (my $ref = $sth->fetchrow_hashref()) { my $temp = $template; $temp =~ s#__TITLE__#$ref->{'title'}#; my $job_spec = $ref->{'job_spec'}; ...etc... 关键是while(我的$ref = $sth-> fetchrow_hashref()){.我想这是在说“我可以从退回的记录集中取出另一个空位……”.如果我在此行之前放置我的print语句,它将始终显示;在这条线之后,每个空缺都会重复. 如何确定是否有一些空缺要显示,而不会过早地移动返回的记录集? 我总是可以在while循环中复制代码,并将它放在if()语句中(在while循环之前),它也包含我的print语句.但我更喜欢只有简单的方法如果有任何记录然后打印“我们当前有…”行.不幸的是,即使这个简单的行,我也没有线索. 看,我告诉你这是一个微不足道的问题,即使考虑到我的错误解释! TIA 克里斯 解决方法
一个非常简单的方法是:
$sth->execute(); my $first = 1; while (my $ref = $sth->fetchrow_hashref()) { if( $first ) { print "We currently have the following vacancies:n"; $first = 0; } my $temp = $template; ... } if( $first ) { print "No vacancies foundn"; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |