我有一個需要傳遞的項目列表,這些項目應該被刪除。我怎樣才能在PHP中做到這一點?在PHP中刪除多個項目
$query = "DELETE from members WHERE member_id ='$chan[2]' ";
$chan[2]
保存多個值,但只刪除一個值。
我有一個需要傳遞的項目列表,這些項目應該被刪除。我怎樣才能在PHP中做到這一點?在PHP中刪除多個項目
$query = "DELETE from members WHERE member_id ='$chan[2]' ";
$chan[2]
保存多個值,但只刪除一個值。
$ chan [2]引用$ chan數組中的一個元素。所以,我認爲你的意思是$ chan有多個值。
試試這個:
$query = "DELETE FROM members WHERE member_id IN (" . implode(", ", $chan) . ");";
請注意,該代碼不能防止SQL注入!確保在使用該代碼之前清理$ chan中的任何數據! – 2009-11-17 13:41:53
使用
$query = "DELETE FROM members WHERE member_id IN (" . join("," $chan[2]) . ")";
如果$chan[2]
持有的ID列表被刪除。還要確保您只將數值傳遞給查詢以避免sql注入問題。
$member_ids = implode(", ", $chan);
"$query = "DELETE from members WHERE member_id IN ($member_ids)";
等號運算符將只刪除與給定值完全匹配的值。如果數組中有多個ID,則需要使用其他條件。您可以使用MYSQL功能FIND_IN_SET()
,例如,如果這是你的數據庫:
$ids = array(1, 2, 3);
$query = "DELETE FROM members WHERE FIND_IN_SET(member_id, '" . implode(',', $ids) . "')";
一件事:如果你已經從用戶接收的ID是非常非常小心。 It might contain bogus data。用mysql_escape_string()
進行消毒:
$ids = array_map('mysql_escape_string', $ids);
以上給出的implode答案是正確的方法。純粹是爲了使發生的事情非常清楚;這是代碼,如果破滅不存在,您會使用(我把它$議員是一個2-d數組因此$瓚[2]有5名成員,使用$瓚否則)
// start roll-your-own $member_id_cond = implode(", ",$chan[2]);
$member_id_cond = "";
foreach($chan[2] as $key => $data) {
$member_id_cond .= $data . ", ";
if($key == 4) { //this is just to remove the last comma
$member_id_cond = sub_str($member_id_cond, 0, -2);
}
}
//end implode
$query = "DELETE FROM members WHERE member_id IN ($member_id_cond)";
你」需要更具體。當你說「多重價值」時,你是什麼意思?數組?逗號分隔值? – 2009-07-14 15:15:41