2009-07-14 3 views
1

У меня есть список элементов, которые необходимо передать, которые необходимо удалить. Как я могу это сделать в PHP?Удаление нескольких элементов в PHP

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

$chan[2] имеет несколько значений, но удаляет только один.

+0

Вы» нужно будет быть более конкретным. Когда вы говорите «несколько значений», что вы имеете в виду? Массив? значения, разделенные запятыми? –

ответ

10

$ chan [2] относится к одному элементу массива $ chan. Итак, я думаю, вы имеете в виду, что $ 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] содержит список идентификаторов, которые будут удалены. Также убедитесь, что вы передаете только числовые значения в запрос, чтобы избежать проблем с вложением SQL-запросов.

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

Оператор равенства будет точно удалять только значения, соответствующие данному значению. Если у вас несколько идентификаторов в массиве, вам нужно использовать другое условие. Вы можете использовать функцию MYSQL FIND_IN_SET(), например, если это ваша база данных:

$ids = array(1, 2, 3); 
$query = "DELETE FROM members WHERE FIND_IN_SET(member_id, '" . implode(',', $ids) . "')"; 

Еще одна вещь: очень очень осторожны, если вы получили идентификаторы от пользователя. It might contain bogus data. Дезинфекция осуществляется с mysql_escape_string():

$ids = array_map('mysql_escape_string', $ids); 
0

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)";