У меня есть поле в моей базе данных под названием population_served. Он может содержать до четырех значений - взрослых, подростков, детей или гериатрических. Например:Оператор выбора MySQL с использованием значений массива
Row1: Взрослые
row2: гериатрический
ROW3: взрослые, дети
Моя форма поиска имеет флажки для этих вариантов:
<input name="populations[]" type="checkbox" id="populations[]" value="Adults" />
<input name="populations[]" type="checkbox" id="populations[]" value="Adolescents" />
<input name="populations[]" type="checkbox" id="populations[]" value="Children" />
<input name="populations[]" type="checkbox" id="populations[]" value="Geriatric" />
Я хочу, чтобы мой выбор чтобы найти любую строку, содержащую то, что я проверил. Если я проверю Adult, тогда ROW1 и ROW3 будут результатом. То же самое с детьми. Если я нахожу только Гериатрический, тогда ROW2 будет результатом. Вот что я придумал, но это, кажется, не работает:
$populations = implode("', '",$_POST["populations"]);
$SQL2 = "SELECT * FROM membership WHERE populations_served IN ('$populations');";
Это приводит к:
SELECT * FROM membership WHERE populations_served IN ('Adults', 'Children');
Но только ROW1 возвращается, не Row1 & ROW3. Если я выберу все флажки, тогда будут возвращены строки, содержащие только Гериатрические. Я не могу понять результаты!
Вот как выглядит база данных:
+---------+--------+----------------------+
| f_name | l_name | populations_served |
+---------+--------+----------------------+
| Anamika | Pandit | Adults |
| Mary | Anchor | Geriatric |
| Roger | Lewis | Adults, Children |
| Danny | Gibson | Geriatric |
+---------+--------+----------------------+
Покажите нам, как хранить эти данные в таблице вашей базы данных. – zaratustra
** SQL injection alert ** ... вы вставляете нефильтрованный ввод пользователя в свою базу данных. – lxg
Расположение базы данных находится в исходном сообщении – mbeasley