ОБСУЖДЕНИЕ

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

7 ответов 5,2 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Статус
Закрыто для дальнейших ответов.
Автор темы
знаю, что есть конструкция DELETE FROM mytable WHERE id IN 1,2,6. Как её правильно использовать? И если у меня mytable записано в переменную, каким образом мне её вставлять в мускул-запрос?
 
Всё, разобрался. Кому ВДРУГ понадобится - вот код:

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

Вот и всё..;)
 
Ну а если использовать логические операнды, в частности AND
DELETE FROM mytable WHERE id='1' AND id='2' AND id='6'
 
IN все-таки лучше :)
 
я опять рулю :)
 
кста, а с AND тут не прокатит никак, нужно хотя бы OR :)
 
Так не проще будет:
$stt = "DELETE FROM ".$dir." WHERE id IN (" . implode(', ', $mails) . ")";
 
Статус
Закрыто для дальнейших ответов.