我允许用户按城市搜索我的数据库中的数据。我的查询如下所示:
$results = mysql_query("SELECT * FROM mydb WHERE City='".$city."' LIMIT 10");
我希望用户能够搜索“所有城市”,因此我希望删除WHERE语句,如果$city==‘所有城市’;或者为WHERE语句使用通配符,以匹配数据库中的所有城市。
我曾经有一个在两个查询之间切换的IF语句,但我想添加更多的过滤器,如country/all countries、zipcode/all zipcodes等,所以我宁愿保留一个动态SQL查询。
发布于 2010-07-03 19:59:59
那么,您仍然可以只使用一个查询并动态构建where子句,如下所示:
$where = '';
// conditional statements (if/else, switch) for populating the where clause
$where .= " WHERE City = '{$city}'";
$where .= " AND Country = '{$country}'";
$results = mysql_query("SELECT * FROM mydb{$where} LIMIT 10");发布于 2010-07-03 19:37:08
一种方法是使用case语句:
WHERE City = case when '$city' = 'All cities' then City else '$city' end如果用户正在搜索“所有城市”,则将WHERE语句转换为:
WHERE City = City这总是正确的(至少对于非空城市是这样的;)
附注:请确保您使用只读MySQL帐户运行这些查询。用户可以在$city参数中输入有趣的东西!
发布于 2010-07-03 19:52:57
你可以试一试
WHERE City like '$city'并允许用户输入通配符,如果您认为他们可以这样做的话。
https://stackoverflow.com/questions/3171358
复制相似问题