首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Sql查询- if语句

Sql查询- if语句
EN

Stack Overflow用户
提问于 2009-12-15 18:12:28
回答 5查看 349关注 0票数 0

我尝试为用户创建一个“高级”搜索栏。(用户有5-8个字段来缩短搜索列表。)

我想我必须根据哪个发布的字段不为空来构建查询。

这是我的原始查询,但是通过这个查询,我获得了表中的所有行。

代码语言:javascript
运行
复制
$query = "select * from MYTABLE where FIELD1 LIKE '%$sample1%' OR FIELD2 LIKE '%$sample2%' OR FIELD3 LIKE '%$sample3%' OR FIELD4 LIKE '%$sample4%' order by name"; 

所以我想我必须在查询中使用IF语句,但我不知道是怎么做的,我总是出错。还有一件事:如果用户填写的是"sample4",那么他必须填写"sample1“。我怎样才能检查这个?

谢谢你的帮助。

EN

回答 5

Stack Overflow用户

发布于 2009-12-15 18:22:47

你也可以使用数组来做这件事,这样会更有条理。对于每个where条件,您将它们存储在一个数组项中,最后在生成SQL时连接它们。

代码语言:javascript
运行
复制
<?

$fields = array('field1', 'field2', 'field3');
// Changed this to 0, so it won't return all rows
// but also the default array element prevent the statement to fail when 
// no search is being specified at all
$wheres = array(0);
foreach ($fields as $fieldname) {
  // Get user input
  $search = $_GET[$fieldname];
  // add condition to wheres if not empty
  if (!empty($search)) {
    $wheres[] = $fieldname . ' LIKE "%' . mysql_real_escape_string($search)  . '%"';
  }
}

// Join the wheres conditions using OR, (or AND)
$query = 'select * from MYTABLE where' . join(' OR ', $wheres);

?>
票数 2
EN

Stack Overflow用户

发布于 2009-12-15 18:30:53

你应该考虑实现一个“全文搜索”引擎。

MySQL有一个“全文”搜索功能--你可以开始了解它here:另请参阅这篇文章:Developing A Site Search Engine With PHP And MySQL

票数 1
EN

Stack Overflow用户

发布于 2009-12-15 18:22:23

也许创建一个只包含用户填写的筛选器约束的查询比包含所有筛选器约束更好。

如果您希望遵循解决方案,则可以使用SQL结构

代码语言:javascript
运行
复制
CASE WHEN

请参阅MS SQL的this和MySQL的this

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

https://stackoverflow.com/questions/1906411

复制
相关文章

相似问题

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