首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PHP搜索mySQL,使用WHERE通配符还是IF语句?

问用PHP搜索mySQL,使用WHERE通配符还是IF语句?
EN

Stack Overflow用户
提问于 2010-07-03 19:33:56
回答 4查看 1.1K关注 0票数 1

我允许用户按城市搜索我的数据库中的数据。我的查询如下所示:

$results = mysql_query("SELECT * FROM mydb WHERE City='".$city."' LIMIT 10");

我希望用户能够搜索“所有城市”,因此我希望删除WHERE语句,如果$city==‘所有城市’;或者为WHERE语句使用通配符,以匹配数据库中的所有城市。

我曾经有一个在两个查询之间切换的IF语句,但我想添加更多的过滤器,如country/all countries、zipcode/all zipcodes等,所以我宁愿保留一个动态SQL查询。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-03 19:59:59

那么,您仍然可以只使用一个查询并动态构建where子句,如下所示:

代码语言:javascript
复制
$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");
票数 2
EN

Stack Overflow用户

发布于 2010-07-03 19:37:08

一种方法是使用case语句:

代码语言:javascript
复制
WHERE City = case when '$city' = 'All cities' then City else '$city' end

如果用户正在搜索“所有城市”,则将WHERE语句转换为:

代码语言:javascript
复制
WHERE City = City

这总是正确的(至少对于非空城市是这样的;)

附注:请确保您使用只读MySQL帐户运行这些查询。用户可以在$city参数中输入有趣的东西!

票数 0
EN

Stack Overflow用户

发布于 2010-07-03 19:52:57

你可以试一试

代码语言:javascript
复制
WHERE City like '$city'

并允许用户输入通配符,如果您认为他们可以这样做的话。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3171358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档