2009-07-14 3 views
1

削除するアイテムのリストを渡す必要があります。 PHPでこれをどうすればできますか?PHPで複数のアイテムを削除する

$query = "DELETE from members WHERE member_id ='$chan[2]' "; 

は複数の値を保持しますが、1つだけを削除します。

+0

破が存在しなかった場合は、使用したいコードです(私はそれを取る$ちゃんは2次元配列である$ちゃんので、そうでない場合は、[2] 5人のメンバーを持っている、$ちゃんを使用します)より具体的にする必要があります。 「複数の価値観」と言いますと、どういう意味ですか?アレイ?カンマ区切りの値? –

答えて

10

$ chan [2]は、$ chan配列内の1つの要素を参照します。ですから、$ chanには複数の値があることを意味していると思います。

はこれを試してみてください:


$query = "DELETE FROM members WHERE member_id IN (" . implode(", ", $chan) . ");"; 
+0

このコードはSQLインジェクションから保護されていませんのでご注意ください!そのコードを使用する前に、$ chanのデータを必ず消毒してください! –

3

使用

$query = "DELETE FROM members WHERE member_id IN (" . join("," $chan[2]) . ")"; 

$chan[2]を削除するIDのリストを保持している場合。また、SQLインジェクションの問題を避けるために、クエリに数値のみを渡すようにしてください。

0
$member_ids = implode(", ", $chan); 
"$query = "DELETE from members WHERE member_id IN ($member_ids)"; 
0

等価演算子は、指定された値と正確に一致する値だけを削除します。配列に複数の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); 
0

上記の腹腔内反応は正しい方法です。純粋にそこで起こることを非常に明確にするため。これは、あなたは「

// 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)"; 
関連する問題