最近做项目,在做搜索模块的时候,模糊查询肯定少不了。

今天就详细的看一下模糊查询:

$where['title'] = array('like','%'.$words.'%');
$where['title'] = array('like',array('%'.$words.'%','%'.$wordss.'%'));
$where['title'] = array(array('like','%'.$words.'%'),array('like','%'.$wordss.'%'));

一、当个字段做模糊查询。

$words = "吃";
$where['title'] = array('like','%'.$words.'%');
$list = $TagDB->where($where)->select();

这样执行的Sql是:

SELECT * FROM `tp_keywords_sanqi` WHERE `title` LIKE '%吃%' 

这个可以查询多个字段:

$where['title'] = array('like','%'.$words.'%');
$where['description'] = array('like','%'.$words.'%');
$list = $TagDB->where($where)->select();

上面的坏处:很多时候,我们做的是标题 title的查询,而且查询的时候,要求包含 title 包含两个或者以上的词:

例如:

要求一:查询标题包含 “作用” 或 “怎样” ;

$words = "怎样";
$wordss = "作用";
$where['title'] = array('like',array('%'.$words.'%','%'.$wordss.'%'));
$list = $TagDB->where($where)->select();

执行的Sql是这样的:

SELECT * FROM `tp_keywords_sanqi` WHERE (`title` LIKE '%怎样%' OR `title` LIKE '%作用%') 

要求二:查询标题中同时包含 “作用” 和 ”怎样“ ;

$words = "怎样";
$wordss = "作用";
$where['title'] = array(array('like','%'.$words.'%'),array('like','%'.$wordss.'%'));
$list = $TagDB->where($where)->select();

执行的sql是这样的:

SELECT * FROM `tp_keywords_sanqi` WHERE ( `title` LIKE '%怎样%' AND `title` LIKE '%作用%' ) 

当然啦!还可以自己写Sql来执行:

$sql = "SELECT * FROM `tp_keywords_sanqi` WHERE `title` LIKE '%什么%';";
$sql = "SELECT * FROM `tp_keywords_sanqi` WHERE (`title` LIKE '%什么%') OR (`title` LIKE '%吃%');";
$sql = "SELECT * FROM `tp_keywords_sanqi` WHERE (`title` LIKE '%什么%' AND `title` LIKE '%作用%')";
$list = M()->query($sql);

具体示例:

$words = "作用 功效";
$where = array();
$wordsArr = explode(' ',$words);
$whereArr = array();
foreach($wordsArr as $k=>$v){
$arr = array();
if(!$v)unset($wordsArr[$k]);
array_push($arr,'like');
array_push($arr,'%'.$v.'%');
array_push($whereArr,$arr);
}
$where['title'] = $whereArr;
$list = $TagDB->where($where)->select();
echo $TagDB->getLastSql();

执行的Sql:

SELECT * FROM `tp_keywords_sanqi` WHERE ( `title` LIKE '%作用%' AND `title` LIKE '%功效%' ) 

目的达到!

thinkphp---模糊查询详解的更多相关文章

  1. ThinkPHP视图查询详解

    ThinkPHP视图查询详解 参考http://www.jb51.net/article/51674.htm   这篇文章主要介绍了ThinkPHP视图查询,需要的朋友可以参考下     ThinkP ...

  2. Mybatis-生成逆向工程后对数据库的模糊查询详解

    MyBatis-使用逆向工程中方法进行模糊查询 1.应用mybatis逆向工程会大大的提高我们的开发效率,如何应用mabatis 逆向生成的代码进行模糊查询那. 2.首先看一下pojo 层中examp ...

  3. Lucene系列六:Lucene搜索详解(Lucene搜索流程详解、搜索核心API详解、基本查询详解、QueryParser详解)

    一.搜索流程详解 1. 先看一下Lucene的架构图 由图可知搜索的过程如下: 用户输入搜索的关键字.对关键字进行分词.根据分词结果去索引库里面找到对应的文章id.根据文章id找到对应的文章 2. L ...

  4. ElasticSearch第四步-查询详解

    ElasticSearch系列学习 ElasticSearch第一步-环境配置 ElasticSearch第二步-CRUD之Sense ElasticSearch第三步-中文分词 ElasticSea ...

  5. Solr安装入门、查询详解

    Solr安装入门:http://www.importnew.com/12607.html 查询详解:http://www.360doc.com/content/14/0306/18/203871_35 ...

  6. MySQL简单查询详解-单表查询

    MySQL简单查询详解-单表查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查询的执行路径 一条SQL查询语句的执行过程大致如下图所示: 1>.客户端和服务端通过my ...

  7. (转)Mysql 多表查询详解

    MySQL 多表查询详解 一.前言  二.示例 三.注意事项 一.前言  上篇讲到mysql中关键字执行的顺序,只涉及了一张表:实际应用大部分情况下,查询语句都会涉及到多张表格 : 1.1 多表连接有 ...

  8. 分享知识-快乐自己:Hibernate 中Criteria Query查询详解

    1):Hibernate 中Criteria Query查询详解 当查询数据时,人们往往需要设置查询条件.在SQL或HQL语句中,查询条件常常放在where子句中. 此外,Hibernate还支持Cr ...

  9. Mysql高手系列 - 第12篇:子查询详解

    这是Mysql系列第12篇. 环境:mysql5.7.25,cmd命令中进行演示. 本章节非常重要. 子查询 出现在select语句中的select语句,称为子查询或内查询. 外部的select查询语 ...

  10. Solr查询详解

    前言:上节是关于Solr的开发准备工作:.NET开发过程中的全文索引使用技巧之Solr(http://www.cnblogs.com/johnwood/p/3447242.html) 这节重点是讲So ...

随机推荐

  1. 远程执行命令和文件分发shell脚本

    deploy.conf node01,all,other,datanode,journalnode,zookeeper, node02,all,other,datanode,journalnode,z ...

  2. 织梦Dedecms系统可疑文件include/filter.inc.php扫描出漏洞,该如何解决?

    今天在做网站监察的时候,发现网站出了一个问题,在对网站做木马监测的时候,扫描出一个可疑文件:/include/filter.inc.php,建议删除,但仔细检查后,发现此文件是织梦(Dedecms)系 ...

  3. mysql初始化时报错bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory的处理

    问题描述: 今天新安装了一个linux虚拟机,然后安装mysql 5.7.21,在进行初始化的时候,报错 bin/mysqld: error : cannot open shared object f ...

  4. Visual Studio 添加SVN插件

    这两天为了开发一个移动混合式的框架,被迫去学习去使用VisualStudio,这玩意当年离开校园就再也没用过了,再次看到感觉还是很眼熟...,这篇文件就简单说明下VS下怎么安装SVN插件吧: 1 首先 ...

  5. grid网格的流动grid-auto-flow属性

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 如何在windows上测试iphone?

    本教程将会让你没有mac照样测试iphone,这是我折腾了几天总结下来的,希望对大家有用. 先来几张效果图吧 方法很简单,但是配置起来说实话有点麻烦,先在电脑上安装vmware,在安装osx系统,在安 ...

  7. lua 注释

    1. 单行注释 --  功能等同于C++中的// 2. 多行注释  --[[  注释的内容  ]]   功能等同于C++中的 /**/ 3. 多行注释   --[====[   注释和内容  ]=== ...

  8. 使用 urllib 设置代理服务

    (1) 如果我们一直用同一个IP去请求同一个网站上的网页,久了之后可能会被该网站服务器屏蔽,因此我们可以使用代理IP来发起请求,代理实际上指的就是代理服务器(2) 当我们使用代理IP发起请求时,服务器 ...

  9. 手机CPU天梯图2018年5月最新版

    话不多说,以下是2018年5月最新的手机CPU天梯图精简版,由于最近一两个月,芯片厂商发布的新Soc并不不多,因此这次天梯图更新,主要是来看看今年主流手机厂商都流行使用哪些处理器. 手机CPU天梯图2 ...

  10. codeforces水题100道 第二十五题 Codeforces Round #197 A. Helpful Maths (Div. 2) (strings)

    题目链接:http://www.codeforces.com/problemset/problem/339/A题意:重新组合加法字符串,使得按照1,2,3的顺序进行排列.C++代码: #include ...