Mysql 如何添加多个查询WHERE语句,这些语句可能有值,也可能没有值

Mysql 如何添加多个查询WHERE语句,这些语句可能有值,也可能没有值,mysql,forms,search,Mysql,Forms,Search,我正在创建一个表单,允许用户在数据库中搜索不同的条件:位置、城市、最低价格、最高价格等 我有一个“基本”select语句:select*fromtable 在搜索表单中,有几个文本框和下拉列表,它们可能有值,也可能没有值,这取决于用户希望搜索的内容 当特定的表列(根据用户的选择)可能有值或没有值时,我很难理解如何将WHERE子句添加到sql语句中 谢谢任何人的帮助 在生成SQL的代码中,检查用户输入的字段,并在发现用户的更多输入时向查询追加更多检查。PHP中的快速示例: $sql = "SELE

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

我有一个“基本”select语句:
select*fromtable

在搜索表单中,有几个文本框和下拉列表,它们可能有值,也可能没有值,这取决于用户希望搜索的内容

当特定的表列(根据用户的选择)可能有值或没有值时,我很难理解如何将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
为了使示例简单,我特意省略了post输入的卫生/转义。但是您显然也必须对输入进行清理

注意
前面的多余空格,否则查询将被破坏。

使用这种方法

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

你能展示一些代码吗?你试过什么?你所说的
可以或不可以
是什么意思。使用select*。有道理,SilverSnake。谢谢你提醒我清理用户的条目。谢谢@黄昏时肯定会发生的事!感谢莱克斯修正了我愚蠢的代码错误。:)