Perl разбить стринг
Есть вот такая конструкция
foreach ($cook->{img_ids}) {
my @dress = ();
my $sth = $dbh->prepare("SELECT pid FROM imnew WHERE id IN (".$cook->{img_ids}.")");
my $rvs = $sth->execute or die "execute: ".$sth->errstr."\n";
while (my $dre = $sth->fetchrow_hashref) {
push(@dress, $dre);
}
$sth->finish;
if (@dress) {
$dress[-1]->{last} = 1;
$hash->{dress} = \@dress;
}
}
В $cook->{img_ids} записи хранятся в виде 7687,7688,7689,741,7669,7458 - так вот, как мне сделать перебор каждой записи (главный foreach), но в самом sql запросе использовать каждую запись по очереди, а не вместе.
Ответы (1 шт):
Автор решения: Majestio
→ Ссылка
Попробуй так, если конечно $cook->{img_ids} ссылка на массив строк:
foreach (@{$cook->{img_ids}}) {
my @dress = ();
s/(\d+)/'$1'/g;
my $sth = $dbh->prepare("SELECT pid FROM imnew WHERE id IN ($_)");
my $rvs = $sth->execute or die "execute: ".$sth->errstr."\n";
while (my $dre = $sth->fetchrow_hashref) {
push(@dress, $dre);
}
$sth->finish;
if (@dress) {
$dress[-1]->{last} = 1;
$hash->{dress} = \@dress;
}
}