SELECT DISTINCT有这么多条件

jay*_*jay 3 php mysql sql

我正在尝试为我的网站创建一个过滤器功能.我被告知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>";
}
Run Code Online (Sandbox Code Playgroud)

我的问题是这个过滤器功能将有很多条件,而不仅仅是选择要显示的状态,可以选择哪个县,成员年龄,成员贡献蚀刻.当用户单击DISPLAY按钮显示筛选结果时,我不知道如何为此构建SQL查询.如果只有几个条件我可以简单地使用"SELECT*WHERE(...)AND(....)"但是如果我将它用于过滤器功能,那么会有很多条件,例如:

WHERE (state='CA' OR state='NV' OR state='WA' ..... so on and so fort)

有没有办法这样做,WHERE state=OR('CA','NV','WA')所以我没有这么多state=

此外,有没有人有任何筛选功能的示例查询?过滤器功能就像您在音乐网站中搜索基于流派或其他内容的歌曲一样.我提前为这个令人困惑的问题道歉,我找不到正确的问题要求这个.

sag*_*agi 5

是的,你可以使用IN():

WHERE state IN('CA','NV','WA'...)
Run Code Online (Sandbox Code Playgroud)

它不仅具有相同的效果,而且比几个更有效率OR,总是尽量避免不必要OR的.

正如@Kulvar所提到的,您可以使用implode()它来使用PHP,例如:

'WHERE state IN(' . implode(',', $states) . ')'
Run Code Online (Sandbox Code Playgroud)