Всем привет, пишу некое RESTapi на php и столкнулся с такой проблемой. Вроде все просто, но в то же время не понятно что делать.
Значит есть поле "Категория", оно не обязательно к заполнению, но если оно заполнено, то там передается ID категории (т.е. целое число). В БД значения так же хранятся как int.
Вот тут у меня вопрос. Если пользователь редактирует пост и хочет убрать категорию совсем, что передавать на сервер? null - нельзя, ведь не пройдет проверка isset($_POST['cat']) 0 - нельзя, не пройдет проверка на существование такой категории пустота - не правильно, ведь придется пустоту конвертировать intval-ом
Так вот, подскажите плз. Что правильней всего отсылать?
DevMan, ошибся с примером немного - не filter_input, а filter_input_array
Eсли значение не передано, то filter_input_array(INPUT_GET, ['foo' => ['filter' => FILTER_VALIDATE_INT, 'flags' => FILTER_REQUIRE_SCALAR | FILTER_NULL_ON_FAILURE]]) возвращает ['foo' => NULL] - именно на этот случай и нужен array_key_exists)
Eсли передано пустое значение аля '?foo=&bar=1' и в БД столбец наподобие `foo` INT(11) NULL DEFAULT NULL, то foo будет иметь значение NULL. Eстественно это верно не для всех расширений/субд, но в моем случае (mysqli/mysql 5.7) это работает так
DevMan, если ты понял, то где твой ответ?
я написал что isset может быть заменен на array_key_exists для нахождения null значений в массиве.
приведенный пример с filter_input_array соответствует вопросу - если пустая строка или вообще не передано значение, то переменная - null, если передан id категории - число.