我的网站搜索功能需要您的帮助。我正在开发一个成员(member)区,用户可以在其中根据特定标准或标准组合搜索其他注册用户。
我现在的问题是如何构建动态 mysql 查询以满足每个搜索条件组合的需要,其中条件的数量是可变的。
通常,我可以使用预先确定的一组标准来编写
WHERE param1 = '$param1'
AND param2 = '$param2'
AND param3 = '$param3'
我该如何解决这个问题?
最佳答案
如果问题是您不知道用户会选择哪个标准,但想返回“空白”标准的结果,您可以使用以下方法:
$criteria_1 = $_POST['criteria_1'];
$criteria_2 = $_POST['criteria_2'];
$criteria_3 = $_POST['criteria_3'];
if(!$criteria_1 && !$criteria_2 && !$criteria_1) {
echo "You must select at least one criteria!";
} else {
// Run query mentioned below and return results.
}
查询将如下所示:
SELECT * from mytable
WHERE
(criteria1 = '$criteria_1' OR '$criteria_1' = '') AND
(criteria2 = '$criteria_2' OR '$criteria_2' = '') AND
(criteria3 = '$criteria_3' OR '$criteria_3' = '')
这会将任何空白(未选择的)参数视为空白并忽略它们。请注意,如果没有给出条件,它将返回所有结果。
上面的另一种写法是:
SELECT * from mytable
WHERE
criteria1 IN ('$criteria_1', '') AND
criteria2 IN ('$criteria_2', '') AND
criteria3 IN ('$criteria_3', '')
同样,允许完全不输入以返回所有 criteria1 结果。
关于php - 如何构建适合所有用户的动态 mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10390873/