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

Тема в разделе "PHP программирование", создана пользователем BlackShadow, 1 мар 2012.

Статус темы:
Закрыта.
  1. BlackShadow

    BlackShadow Well-Known Member

    Регистрация:
    4 фев 2011
    Сообщения:
    111
    Симпатии:
    0
    знаю, что есть конструкция DELETE FROM mytable WHERE id IN 1,2,6. Как её правильно использовать? И если у меня mytable записано в переменную, каким образом мне её вставлять в мускул-запрос?
     
  2. BlackShadow

    BlackShadow Well-Known Member

    Регистрация:
    4 фев 2011
    Сообщения:
    111
    Симпатии:
    0
    Всё, разобрался. Кому ВДРУГ понадобится - вот код:

    Код (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);
    }
    Вот и всё..;)
     
  3. Bugnet

    Bugnet Гость

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

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    IN все-таки лучше :)
     
  5. BlackShadow

    BlackShadow Well-Known Member

    Регистрация:
    4 фев 2011
    Сообщения:
    111
    Симпатии:
    0
    я опять рулю :)
     
  6. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    кста, а с AND тут не прокатит никак, нужно хотя бы OR :)
     
  7. Гость

    Так не проще будет:
    $stt = "DELETE FROM ".$dir." WHERE id IN (" . implode(', ', $mails) . ")";
     
  8. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    вы открыли америку! а предыдущие сообщения слабо прочитать? тема закрыта.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей