0

次のコードを使用すると、配列から最後の結果のみを出力するように見えます。like 句と % 記号に関係があると思います。何か案は?

my @keywords = <IN>;
my @number = <IN2>;

foreach my $keywords (@keywords)
{
  chomp $keywords;

  my $query = "select *
    from table1 a, table2 b
    where a.offer = b.offer
    and a.number not in (@number)
    and a.title like ('%$keywords%')";

  print $query."\n";

  my $sth = $dbh->prepare($query)
    or die ("Error: Could not prepare sql statement on $server : $sth\n" .
            "Error: $DBI::errstr\n");

   $sth->execute
     or die ("Error: Could not execute sql statement on $server : $sth\n" .
             "Error: $DBI::errstr\n");

  while (my @results = $sth->fetchrow_array())
  {
    print OUT "$results[0]\t$results[1]\t$results[2]\t$results[3]\t",
              "$results[4]\t$results[5]\t$results[6]\t$results[7]\t",
              "$results[8]\n";          
  }
}

close (OUT);
4

2 に答える 2

0

の出力を表示しprint $queryてください。お役に立てるかもしれません。さらに良いことに、次の出力を表示します。

use Data::Dumper;
$Data::Dumper::Useqq=1;
print Dumper($query);

それまでは、「and の an を置き換える」というコメントは、入力にキャリッジ リターンが含まれていると思わせます。@number が複数ある場合、@number の使用は機能しそうにありません。

于 2013-07-04T18:02:09.630 に答える