当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何检查数据库查询是否会返回结果?》经验,为你挑选了1个好方法。

我们的网站使用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 = <= '$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()) {.我想这是在说"我可以从退回的记录集中取出另一个空位......".如果我在此行之前放置我的print语句,它将始终显示; 在这条线之后,每个空缺都会重复.

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

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

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

TIA

克里斯



1> Graeme Perro..:

一个非常简单的方法是:

$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";
}

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有