我正在创建一个表单,允许用户在数据库中搜索不同的标准:位置、城市、最低价格、最高价格等。
我有一个“基础”选择语句:SELECT * FROM table
.
在搜索表单中,有几个文本框和下拉列表可能有也可能没有值,这取决于用户想要搜索的内容。
当可能有也可能没有用于特定表列的值(基于用户的选择)时,我无法弄清楚如何将 WHERE 子句添加到 sql 语句中。
感谢任何人的帮助!
在生成 SQL 的代码中,检查用户输入了哪些字段,并在您找到来自用户的更多输入时将更多检查附加到查询中。PHP中的快速示例:
$sql = "SELECT * FROM table";
$where_checks = array();
if (isset($_POST['city']))
$where_checks[] = "city = '{$_POST['city']}'";
if (isset($_POST['location']))
$where_checks[] = "location = '{$_POST['location']}'";
// Add more stuff here
if (count($where_checks) > 0)
$sql .= " WHERE " . implode('AND', $where_checks);
// run query
我故意省略了帖子输入的卫生/转义,以保持示例简单。但是你显然也必须清理输入。
请注意之前的额外空间,WHERE
否则查询将被破坏。
使用这种方法
select
columns
from
table
where
(location=@location or @location is null) and
(city=@city or @city is null) and
.
.