Php 使用数组值的MySQL select语句
我的数据库中有一个字段,名为populations。它最多可以包含四个值-成人、青少年、儿童或老年人。例如: 第1行:成年人 第2行:老年人 第三排:成人、儿童 “我的搜索表单”中有以下选项的复选框: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
<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'