如何检查变量是数据库并将其打印出来?

时间:2014-04-23 01:38:40

标签: sql perl

我得到了一个循环数据库的变量列表。如何检测变量不在数据库中?我应该使用什么查询?一旦检测到变量不在数据库中,如何打印出错误消息。

我的代码:

$variable = $sql->{'variable'};

foreach my $sql (@Records){

**Below statement will select existed variable, what should I change to make it select not existed variable**

$sqlMySQL = "Select LOT from table where LOT like '%$variable%'";

}

**If not exist**{

print("Not exist")

}

预期结果:

$variable遍历数据库时,如果数据库中不存在$variable,则打印出$variable或不存在。

感谢您查看,评论和回答。

1 个答案:

答案 0 :(得分:1)

我会这样做与下面类似。

  1. 变量列表 - 将这些变量放在数组中(也就是列表)
  2. 我应该使用什么查询 - 只会选择您需要的查询并将其存储在遍历的最佳数据集中(selectall_hashref)
  3. 当$ variable循环通过数据库时 - 需要对每个DBI进行$variable调用,因此请循环遍历数组以检查散列中是否存在。
  4. 示例

    #!/usr/bin/perl
    
    use strict;
    use warnings;
    use DBI;
    my $dbh =
      DBI->connect( "dbi:SQLite:dbname=test.db", "USERNAME", "PASSWORD",
        { RaiseError => 1 },
      ) or die $DBI::errstr;
    my @vars = ( 25, 30, 40 );
    my $hash_ref =
      $dbh->selectall_hashref( q / SELECT LOT FROM table /, q / LOT / );
    $dbh->disconnect();
    
    foreach (@vars) {
        if ( exists $hash_ref->{$_} ) {
            print $_ . "\n";
        }
        else {
            print "Does not exist\n";
        }
    }
    

    与此类似的内容会将您表格的所有LOT列值拉入哈希key value对,然后您可以将其与array中的foreach进行比较{1}}循环。