我的數組包含多個整數。陣列是@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.
目前我沒有得到查詢中的值。
我的數組包含多個整數。陣列是@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.
目前我沒有得到查詢中的值。
您可以使用類似
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,3'
而不是三個單獨的值。
如果你是在一個字符串構建查詢,可以直接在stirng插入值:
where id in ("[email protected]_id.") . .
但是,你必須要小心,因爲這可以打開你到SQL注入攻擊。
如果你的表是不是很大(或者你不關心性能),您可以使用find_in_set()
:
select *
from groups
where find_in_set(id, @group_id) > 0;
謝謝Gordon Linoff :) – Monisha
我不上打印得到任何值裏面「在(@group_id)」選擇查詢 – Monisha
非常感謝。它的工作 – Monisha