2014-03-13 62 views
0

我的數組包含多個整數。陣列是@group_id。假設它包含三個元素,例如12,45,87。我想將這些傳遞給select語句如下。在mysql中傳遞perl數組select select查詢

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

目前我沒有得到查詢中的值。

回答

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); 
+0

我不上打印得到任何值裏面「在(@group_id)」選擇查詢 – Monisha

+0

非常感謝。它的工作 – Monisha

1

您的查詢將如下對於字符串值,例如'1,2,3'而不是三個單獨的值。

如果你是在一個字符串構建查詢,可以直接在stirng插入值:

where id in ("[email protected]_id.") . . 

但是,你必須要小心,因爲這可以打開你到SQL注入攻擊。

如果你的表是不是很大(或者你不關心性能),您可以使用find_in_set()

select * 
from groups 
where find_in_set(id, @group_id) > 0; 
+0

謝謝Gordon Linoff :) – Monisha