我正在尝试为我的网站创建一个过滤器功能.有人告诉我使用SELECT DISTICT来完成这个任务.下面是我目前所拥有的,它检索列STATE中的所有不同值并将它们显示为复选框,以便用户可以检查他想要在页面上的表上显示的状态.
$sql = "SELECT DISTINCT state FROM allproperties";
$result = mysqli_query($con,$sql);
while ($row = mysqli_fetch_array($result)) {
echo "<input type='checkbox' name='state' value='" . $row[0] . "'>" . $row[0] . "<br>";
}
我的问题是这个过滤器功能将有很多条件,而不仅仅是选择要显示的状态,可以选择哪个县,成员年龄,成员贡献蚀刻.当用户单击DISPLAY按钮显示筛选结果时,我不知道如何为此构建SQL查询.如果只有几个条件我可以简单地使用“SELECT * WHERE(…)AND(….)”但是如果我将它用于过滤器功能,那么会有很多条件,例如:
WHERE(州=’CA’或州=’NV’或州=’WA’…..等等堡垒)
有没有办法像WHERE state = OR(‘CA’,’NV’,’WA’)这样做,所以我没有那么多的状态=?
此外,有没有人有任何筛选功能的示例查询?过滤器功能就像您在音乐网站中搜索基于流派或其他内容的歌曲一样.我提前为这个令人困惑的问题道歉,我找不到正确的问题要求这个.
解决方法:
是的,你可以使用IN()
:
WHERE state IN('CA','NV','WA'...)
它不仅具有相同的效果,而且比几个OR更高效,总是尽量避免不必要的OR.
正如@Kulvar所提到的,您可以使用implode()使其与PHP一起使用,例如:
'WHERE state IN(' . implode(',', $states) . ')'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。