如何添加可能有也可能没有值的多个查询WHERE语句

时间:2012-07-12 12:25:27

标签: mysql forms search

我正在创建一个表单,允许用户在数据库中搜索不同的标准:位置,城市,最低价格,最高价格等。

我有一个“基础”选择语句:SELECT * FROM table

在搜索表单中,有几个文本框和下拉列表可能有也可能没有值,具体取决于用户想要搜索的内容。

当有可能或可能没有用于特定表列的值时(根据用户的选择),我无法弄清楚如何将WHERE子句添加到sql语句。

感谢任何人的帮助!

2 个答案:

答案 0 :(得分:3)

在生成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之前注意额外的空格,否则查询将被破坏。

答案 1 :(得分:0)

使用此方法

select 
    columns
from 
    table
where 
    (location=@location or @location is null) and
    (city=@city or @city is null) and
    .
    .