削除するアイテムのリストを渡す必要があります。 PHPでこれをどうすればできますか?PHPで複数のアイテムを削除する
$query = "DELETE from members WHERE member_id ='$chan[2]' ";
は複数の値を保持しますが、1つだけを削除します。
削除するアイテムのリストを渡す必要があります。 PHPでこれをどうすればできますか?PHPで複数のアイテムを削除する
$query = "DELETE from members WHERE member_id ='$chan[2]' ";
は複数の値を保持しますが、1つだけを削除します。
$ chan [2]は、$ chan配列内の1つの要素を参照します。ですから、$ chanには複数の値があることを意味していると思います。
はこれを試してみてください:
$query = "DELETE FROM members WHERE member_id IN (" . implode(", ", $chan) . ");";
このコードはSQLインジェクションから保護されていませんのでご注意ください!そのコードを使用する前に、$ chanのデータを必ず消毒してください! –
使用
$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);
上記の腹腔内反応は正しい方法です。純粋にそこで起こることを非常に明確にするため。これは、あなたは「
// 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)";
破が存在しなかった場合は、使用したいコードです(私はそれを取る$ちゃんは2次元配列である$ちゃんので、そうでない場合は、[2] 5人のメンバーを持っている、$ちゃんを使用します)より具体的にする必要があります。 「複数の価値観」と言いますと、どういう意味ですか?アレイ?カンマ区切りの値? –