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