我正在创建一个表单,允许用户搜索不同的标准数据库:位置,城市,最低价格,最高价格等如何添加多个查询WHERE语句,可能有或可能没有值
我有一个“基本”选择语句:SELECT * FROM table
。
在搜索表单中,有几个文本框和下拉列表可能有也可能没有值,具体取决于用户想要搜索的内容。
我无法弄清楚如何在可能或不可能有用于特定表列的值(基于用户选择)的情况下向sql语句添加WHERE子句。
感谢任何人的帮助!
我正在创建一个表单,允许用户搜索不同的标准数据库:位置,城市,最低价格,最高价格等如何添加多个查询WHERE语句,可能有或可能没有值
我有一个“基本”选择语句:SELECT * FROM table
。
在搜索表单中,有几个文本框和下拉列表可能有也可能没有值,具体取决于用户想要搜索的内容。
我无法弄清楚如何在可能或不可能有用于特定表列的值(基于用户选择)的情况下向sql语句添加WHERE子句。
感谢任何人的帮助!
在生成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
之前的额外空间,否则查询将被打破。
有道理,SilverSnake。并感谢有关清理用户条目的提醒。谢谢! – marky 2012-07-12 12:39:07
@eventide当然可以!并感谢Lex修复我愚蠢的代码错误。 :) – SilverSnake 2012-07-12 12:40:00
使用这种方法
select
columns
from
table
where
([email protected] or @location is null) and
([email protected] or @city is null) and
.
.
可以显示一些代码?你有什么尝试? – jcho360 2012-07-12 12:27:58
你的意思是“可能或不可能”。使用select *。 – 2012-07-12 12:28:11