Я пытаюсь реализовать квалификатор sql LIKE с заполнителями для набора значений. Я знаю, как сделать это для одного конкретного значения следующим образом:
use strict;
use DBI;
my $dbh = DBI->connect("dbi:Sybase:server=$Srv;database=$Db", "$user", "$passwd") or die "could not connect to database";
my $query = "Select key, first_name from names where last_name like ? ";
my $sth = $dbh->prepare( $query ) or die "could not prepare statement\n", $dbh->errstr;
$sth->bind_param(1, "Mar%") or die "Could not bind_param", $sth->errstr ;
$sth->execute or die "Could not execute $query", $sth->errstr;
while (my @result = $sth->fetchrow_array){
print "@result\n";
}
Когда я пытаюсь внести изменения, чтобы реализовать приведенный выше код для набора значений, присутствующих в массиве @l_names
, я не получаю никакого результата. Я делаю это следующим образом:
use strict;
use DBI;
open (FH, "/home/usr/file") or die $!;
my @l_names= <FH>;
close(FH);
my $dbh = DBI->connect("dbi:Sybase:server=$Srv;database=$Db", "$user", "$passwd") or die "could not connect to database";
my $query = "Select key, first_name from names where last_name like ? ";
my $sth = $dbh->prepare( $query ) or die "could not prepare statement\n", $dbh->errstr;
foreach my $l_name (@l_names){
$sth->bind_param(1, "$l_name%") or die "Could not bind_param", $sth->errstr ;
$sth->execute or die "Could not execute $query", $sth->errstr;
}
while (my @result = $sth->fetchrow_array){
print "@result\n";
}
Есть предложения о том, что идет не так и как это исправить?
Спасибо!