这似乎太简单了,首先不会成为问题 - 但无论如何,这就是问题。
假设您有一个搜索表单,并且您正在寻找从事某个行业某些分支业务的公司。该表单将为每个问题提供一组复选框,用户可以选择他们想要的任何金额。
<小时/>你最喜欢什么颜色?
[]红色
[]蓝色
[ ] 黄色
你最喜欢什么水果?
[]苹果
[]橙色
[]香蕉
<小时/>问题一
如果用户检查红色和蓝色 - 我们是否从数据库中提取仅与两者匹配的行?或者我们是否包含也只匹配红色或蓝色的行?在我看来,最终用户可能期望看到一种结果或另一种结果,或两者兼而有之!
问题 2
请记住,我必须使用的 CMS 将每个问题的数据存储在数组中。因此,第一个问题的公司 A 可能持有值“红色|蓝色”或“红色”或“红色|蓝色|黄色”等 - 再加上我的表格有 10 个类别,每个类别至少有 5 个复选框 - 我怎样才能将其转换为高效且优化的查询,而不必求助于 if/else 混搭?
非常感谢任何帮助。
最佳答案
它很可能是一个连词(红色或蓝色)而不是一个析取词(红色和蓝色),但这取决于问题的语义。如果您给出可以同时出现的选项,那么您可能需要析取。
我看不出比这样更好的方法
$colours = $POST["颜色[]"];
$items = array();foreach($colours 作为 $colour){
$items[] = "'$colour' IN 颜色";
}
$SQL .= "AND (".implode(' OR ', $items).")";
关于PHP MySQL 搜索表单,具有多个类别的多个复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7876106/