Php 使用数组值的MySQL select语句

Php 使用数组值的MySQL select语句,php,mysql,arrays,select,Php,Mysql,Arrays,Select,我的数据库中有一个字段,名为populations。它最多可以包含四个值-成人、青少年、儿童或老年人。例如: 第1行:成年人 第2行:老年人 第三排:成人、儿童 “我的搜索表单”中有以下选项的复选框: <input name="populations[]" type="checkbox" id="populations[]" value="Adults" /> <input name="populations[]" type="checkbox" id="populations

我的数据库中有一个字段,名为populations。它最多可以包含四个值-成人、青少年、儿童或老年人。例如:

第1行:成年人

第2行:老年人

第三排:成人、儿童

“我的搜索表单”中有以下选项的复选框:

<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" />
这导致:

SELECT * FROM membership WHERE populations_served IN ('Adults', 'Children');
但只返回第1行,而不返回第1行和第3行。如果我选中了所有复选框,则返回只有老年人的行。我搞不懂结果

以下是数据库的外观:

+---------+--------+----------------------+
| f_name  | l_name | populations_served   |
+---------+--------+----------------------+
| Anamika | Pandit | Adults               |
| Mary    | Anchor | Geriatric            |
| Roger   | Lewis  | Adults, Children     |
| Danny   | Gibson | Geriatric            |
+---------+--------+----------------------+

您需要使用regexp:

select *
  from (
        select 'Adults' as name union all
        select 'Geriatric' union all
        select 'Adults, Children'
       ) t
 where name regexp 'Adults|Children'

第3行不返回,因为“成人,儿童”不是“成人”或“儿童”之一。
属性是一个字符串,而不是您在
子句中定义的集


也许值得一看,并向我们展示如何将此数据存储在数据库的表中。SQL注入警报…您正在将未经筛选的用户输入插入数据库。数据库布局位于原始post$\u post[“人口”]是来自4个复选框的数组。您不能在此字段中输入任何代码。SQL注入仍然可以使用吗?
select *
  from (
        select 'Adults' as name union all
        select 'Geriatric' union all
        select 'Adults, Children'
       ) t
 where name regexp 'Adults|Children'