Мультиудаление Строк В Mysql

Статус
Закрыто для дальнейших ответов.

BlackShadow

Well-known member
04.02.2011
111
3
#1
знаю, что есть конструкция DELETE FROM mytable WHERE id IN 1,2,6. Как её правильно использовать? И если у меня mytable записано в переменную, каким образом мне её вставлять в мускул-запрос?
 

BlackShadow

Well-known member
04.02.2011
111
3
#2
Всё, разобрался. Кому ВДРУГ понадобится - вот код:

PHP:
for ($i=1; $i<=count($mails); $i++){ // в массиве mails хранятся id'ы выбранных нами сообщений
$n = $i-1;
$strdel .= $mails[$n].","; // создаем строку из идов для квери-запроса
}
$stt = "DELETE FROM ".$dir." WHERE id IN (".$strdel.")"; // генерируем строку квери-запроса
$gett = str_replace(",)",")",$stt);
/*
Пояснение: Это "обрезание" я сделал затем, чтобы исключить ошибки.
Сейчас наша переменная strdel имеет вид "1,2,3,6,9,". Ошибка вызовется из-за последней ЛИШНЕЙ запятой.
Поэтому я её отрезал
*/
$sql = mysql_query($gett); // Посылаем запрос

if ($sql){
echo "
<center>Выбранные сообщения удалены</center>
";
mysql_close($openMySQL);
} else {
echo "MySQL» Ошибка кода!<br>";
mysql_close($openMySQL);
}
Вот и всё..;)
 
B

Bugnet

#3
Ну а если использовать логические операнды, в частности AND
DELETE FROM mytable WHERE id='1' AND id='2' AND id='6'
 

acorn

PHP Developer
29.08.2004
585
3
#6
кста, а с AND тут не прокатит никак, нужно хотя бы OR :)
 
G

Guest

#7
Так не проще будет:
$stt = "DELETE FROM ".$dir." WHERE id IN (" . implode(', ', $mails) . ")";
 
Статус
Закрыто для дальнейших ответов.