Как составить запрос к БД?

Есть параметры поиска в GET для запроса к БД:
search.php?lic=0&section=1,2&type=1,2,3,4
Один из 3 параметров будет обязательно, но любых двух других может не быть. Как запрос к базе составить?

Например делаю так:
SELECT `id`
FROM `content`
WHERE lic='".$lic."' AND section='".$section."' AND type='".$type."'

Но если одна из переменных lic или section или type будет пустая запрос будет работать с пустым условием?
  • Вопрос задан
  • 2317 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Чему равны переменные при их отсутствии в запросе? Если значение - пустая строка, то можно написать так:
$req = $mysqli->prepare(
    "SELECT `id` FROM `content` ".
        "WHERE ('' = ? OR `lic` = ?) ".
            "AND ('' = ? OR `selection` = ?) ".
            "AND ('' = ? OR `type` = ?)"
);
$req->bind_param('ssssss', $lic, $lic, $selection, $selection, $type, $type);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Pentblch
Смотрю в сторону Web, начинающий
На место AND напишите OR и попробуйте.
Ответ написан
@KOPC1886
В дополнение к ответам выше, делайте не только проверку, но и функции intval - если ждете число, strip_tags. А лучше используйте PDO.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы