проверка на отсутсвие элементов в массиве

DenVeroid

Новичок
проверка на отсутсвие элементов в массиве

имеется массив примерно такой 1,2,3,4 цифры могут меняться и количество их тоже меняется,
из этого масива мы выбираем из базы данных записи, но что если произойдёт так что массив
может получиться таким 1,2,,4 или так 1,2,3, разници нет может быть поразному, то тогда
мускул выводит ошибку допустим при таком запросе IN(1,2,,4)

вот сам код

PHP:
     $ids = explode(',', $_GET['id']);
     $sodershanie_ids_query = array_unique($ids);
     $sodershanie_ids = implode(',', $ids);
     $query =  " and sodershanie IN($sodershanie_ids)";
     $sodershanie_ids_link = '&id='.$sodershanie_ids;
как можно сделать проверку чтобы пустое значение удалялось?

да, чтобы было немного понятнее, сами иды передаются по ссылке
http://localhost/script/index.php?id=3,5

пока чтобы небыло ошибок я просто коментирую "//" запрос
 

DenVeroid

Новичок
Нечто, работает, единственное если передаётся 1,2,,4 то array_filter превращяет в пустоту то тогда IN() получает ничего и опять выводит ошибку, конечно можно сделать на отсутствие и неделать в запросе IN(), но хотелось бы выодить те что правельно содержуться в массиве, к примеру из 1,2,,4 вывелось только 1 и 2 и 4 а то что находиться в ,, нетрогать, возможно ли это?
 

Нечто

Психолог РНРClub
если передаётся 1,2,,4 то array_filter превращяет в пустоту
Как это понимать?
array_filter без коллбэка убирает из массива все пустые значения.
Если делается explode(',', '1,2,,4'), то получаем массив array(1,2,'',4), из которого array_filter делает array(1,2,4).
 

DenVeroid

Новичок
упс, извени, теперь всё нормально

-~{}~ 22.03.05 04:56:

кстати, я так понимаю тут большая дыра в безопасноси может оказаться, т.к через урл можно делать малипуляции, млжно ли чемно обезапасится в этой ситуации?
 

DenVeroid

Новичок
неплохо, вот только пытаюсь сделать проверку, тоесть если переменная пустая то в запросе не должно быть IN() а если имеется массив, то должен выводить
проверяю isset($ids)
даже пробывал is_array($ids)
и даже так if($ids == '')

но почемуто пропускает и выводит пустой IN()
 
Сверху