Исходные: есть некая форма с выпадающим списком “Цвет бумаги”: все, красный, желтый, зеленый.
Задача: выбрать из колонки “Цвет бумаги” базы данных все цвета, когда пользователь выбирает в форме “все”, ибо, как выбрать остальные по одному - понятно.
Вариант с field LIKE %$color% не получается. Возможно, из-за неверного синтаксиса. Как правильно прописать его с биндингом, если других вариантов нет?
$stmt = $mysqli->prepare("SELECT * FROM `A4` WHERE `color`=? AND `form`=?") or die(mysqli_error($mysqli));
$stmt->bind_param('ss', $color,$form);
Так тут не в нем дело, биндинг просто подставляет одно указанное значение вместо ?.
Отличие от просто вставки в строку самому в том, что не будет SQL инъекции если забыть обработать значение.
Вопрос, оказывается, можно решить достаточно просто: величиной поля “все” я указал “%” - он меняет любые знаки в любом количестве и, передаваемый в переменной, выбирает все значения колонки.