gpt4 book ai didi

perl - 如何检查数据库查询是否会返回结果?

转载 作者:行者123 更新时间:2023-12-04 16:20:10 32 4
gpt4 key购买 nike

我们的网站使用 Perl 为我们的 HR 人员提供一种简单的机制来向我们的网站发布职位空缺。它是由第三方开发的,但他们早就开始接触了,遗憾的是我们内部没有任何 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 (my $ref = $sth->fetchrow_hashref()) { .我想这是说'虽然我可以从返回的记录集中拉出另一个空缺......'。如果我将打印语句放在这一行之前,它将始终显示;在这条线之后,每个空缺都会重复。

我如何确定有一些空缺要显示,而不会过早地通过返回的记录集?

我总是可以复制 while 循环中的代码,并将其放在 if() 语句中(在 while 循环之前),该语句也将包含我的打印语句。但我更愿意采用更简单的方法 If any records then print "We currently have.." line .不幸的是,即使是这条简单的代码,我也没有任何线索。

看,我告诉过你这是一个微不足道的问题,即使考虑到我笨拙的解释!

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 found\n";
}

关于perl - 如何检查数据库查询是否会返回结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/290133/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com