За последние 24 часа нас посетили 74625 программистов и 10147 роботов. Сейчас ищут 2345 программистов ...

Как удалить все записи по массиву id??

Тема в разделе "PHP для новичков", создана пользователем sav2907, 2 мар 2017.

  1. sav2907

    sav2907 Новичок

    С нами с:
    2 мар 2017
    Сообщения:
    10
    Симпатии:
    0
    Код (Text):
    1.  
    2. for($i = 1; $i <= 50; $i++) {
    3. if (!empty($_POST['id'.$i])) {
    4. $id = $_POST['id'.$i];
    5. $del = ("DELETE FROM Controlling_test WHERE ids = '$id'");
    6. $del_res = mysql_query($del);
    7. }  
    8. }
     
  2. Sergey_Tsarev

    Sergey_Tsarev Активный пользователь

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    PHP:
    1. $del = ("DELETE FROM `Controlling_test` WHERE 'ids' <= 50");
    А если все данные из массива, то:

    PHP:
    1. $array = array(1,15,14,77,82); //массив с данными для удаления
    2. $ids = implode(",", $array); //объединяем элементы массива в строку
    3. $del = ("DELETE FROM `Controlling_test` WHERE 'ids' IN ('$ids')");
     
    #2 Sergey_Tsarev, 3 мар 2017
    Последнее редактирование: 3 мар 2017
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    Расширение mysql_ устарело, почти 5 лет было deprecated, а в современном PHP вообще выпилено.
    Пользуйтесь вместо него нормальным mysqli_, либо PDO_, если в том есть необходимость.
     
  4. Drema

    Drema Новичок

    С нами с:
    20 фев 2017
    Сообщения:
    117
    Симпатии:
    30
    Если массив получаете из POST, то проверяйте еще все значения массива на целые числа, а взломают разного рода хакеры :) типа такого:
    PHP:
    1. if(array_product(array_map('is_int', $array))){
    2.   mysqli_query("DELETE FROM ttt WHERE id IN (".implode(",",$array).")");
    3. }
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    У @Drema правильно, у предыдущих неправильно :p
     
    Drema нравится это.
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    Не правильно. Где линк в параметрах mysqli_query?
     
  7. sav2907

    sav2907 Новичок

    С нами с:
    2 мар 2017
    Сообщения:
    10
    Симпатии:
    0
    Знаю, дома использую Open Server, там mysqli_ не работает
     
  8. Sergey_Tsarev

    Sergey_Tsarev Активный пользователь

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    Как это???
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    я только запрос видел. глаз замылился. =)
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    быть такого не может, ну либо руками докиньте его, либо вы работаете с ним неправильно.
     
  11. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    Там в open-server можно переключить версию PHP на 5.6 или 7, попробуй, может после этого будет работать
     
  12. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток
    Ну давайте начнем с того что в массивах все значения начинаются с индентификатора не 1 а 0. В следствии чего $i у вас в цикле должна быть равна 0.
    for($i = 0; $i <= 50; $i++)

    И я бы на вашем месте прикрутил проверку на выполнение действий. тогда сразу видно будет где косяк
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    в базе id обычно больше нуля
     
  14. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток
    Это и ежу понятно. Но он $i использует как идентификатор в массиве, а не значение поля id.
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    Да, ты прав.
     
  16. Mitai

    Mitai Новичок

    С нами с:
    23 окт 2016
    Сообщения:
    155
    Симпатии:
    24
    pdo лучше не использовать без не обходимости? где то видел статью на хабре там суть сводилось к тому что пдо лучше для совместимостей бд или что то типо того, толком не понял
     
  17. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    Да. PDO нужен только, если планируется работа с разными БД, либо миграции. Если же работа идет только с MySQL, то Mysqli предпочтительнее. Он быстрее, но так же предоставляет ООП-интерфейс, если надо, подготавливаемые выражения и, главное, ворох функций, обеспечивающих нативное управление базой, без которых управление сводилось бы к служебным запросам, которые обходятся дороже прямых вызовов через mysqlnd-драйвер.
     
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    расскажи плс
     
  19. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    Дохрена перечислять. Это всякие переключения пользователей, управления транзакциями, кодировками, доступ к техническим данным запроса, отладочные методы, работа с журналами и все все все на свете. Вплоть до работы master-slave связок.

    Раньше, во времена mysql_ это делалось ручками через служебные запросы. Сегодня это делается через нативные функции. И в доках строго рекомендуется использовать именно их, а не ручные пробросы служебных запросов.
     
  20. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    Мне кажется это круто!
     
  21. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    Ну дык. А еще есть честные подготовленные выражения, а не эмулируемые через жопу, как на PDO по умолчанию.
     
  22. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    Эмулируемые очень опасны, да.

    Но PDO штука удобная, популярная и уважаемая. Очень известное решение.
     
  23. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    Уважаемая потому, что известная, известная потому, что уважаемая :)
    Не, я не спорю, что если пилится какое-то решение, где тип БД заведомо неизвестен, PDO нужен. В остальных же случаях, я бы его не рекомендовал.