我的数组包含多个整数。数组是@group_id
。假设它包含三个元素,如12,45,87。我想将这些传递给select语句,如下所示。
select * from groups where id in (@group_id) // should get all the ids inside it.
目前我没有在查询中获取值。
答案 0 :(得分:3)
您可以使用类似
的内容local $" = ",";
在查询之前,如果id是数字,但是这使您容易受到sql injection attacks的攻击,那么请使用?
占位符的查询,
my $placeholders = join ",", ("?") x @group_id;
my $sql = "select * from groups where id in ($placeholders)";
# $sth prepare..
$sth->execute(@group_id);
答案 1 :(得分:2)
您的查询将查找字符串值,例如'1,2,3'
,而不是三个单独的值。
如果要在字符串中构造查询,可以直接在stirng中插入值:
where id in (".@group_id.") . .
但是,您需要小心,因为这可以打开SQL注入攻击。
如果您的牌桌不是很大(或者您不关心表现),可以使用find_in_set()
:
select *
from groups
where find_in_set(id, @group_id) > 0;