在mysql选择查询中传递perl数组

时间:2014-03-13 11:47:25

标签: mysql arrays perl select

我的数组包含多个整数。数组是@group_id。假设它包含三个元素,如12,45,87。我想将这些传递给select语句,如下所示。

select * from groups where id in (@group_id) // should get all the ids inside it.

目前我没有在查询中获取值。

2 个答案:

答案 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;