2010-09-30 13 views

Répondre

8

Non, vous ne pouvez pas le faire facilement. Une option consiste à utiliser $dbh->quote, par exemple. Ou vous pouvez créer les espaces réservés nécessaires et passer le tableau en tant que paramètres de liaison, par exemple.

my @values = (1,2,3,4); 
my $sql = "SELECT * from my_table WHERE ID IN ("; 
$sql .= join(',', map { '?' } @values); 
$sql .= ')'; 

my $sth = $dbh->prepare($sql); 
$sth->execute(@values); 

Aucun des deux n'est exceptionnellement joli.

1

pas si vous vouloir un nombre arbitraire d'espaces réservés, non. Vous pouvez l'utiliser avec un IN, comme dans

where foo in (?, ?, ?) 

mais alors vous devez avoir exactement trois liaisons.