thinkphp---模糊查询详解
最近做项目,在做搜索模块的时候,模糊查询肯定少不了。
今天就详细的看一下模糊查询:
$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---模糊查询详解的更多相关文章
- ThinkPHP视图查询详解
ThinkPHP视图查询详解 参考http://www.jb51.net/article/51674.htm 这篇文章主要介绍了ThinkPHP视图查询,需要的朋友可以参考下 ThinkP ...
- Mybatis-生成逆向工程后对数据库的模糊查询详解
MyBatis-使用逆向工程中方法进行模糊查询 1.应用mybatis逆向工程会大大的提高我们的开发效率,如何应用mabatis 逆向生成的代码进行模糊查询那. 2.首先看一下pojo 层中examp ...
- Lucene系列六:Lucene搜索详解(Lucene搜索流程详解、搜索核心API详解、基本查询详解、QueryParser详解)
一.搜索流程详解 1. 先看一下Lucene的架构图 由图可知搜索的过程如下: 用户输入搜索的关键字.对关键字进行分词.根据分词结果去索引库里面找到对应的文章id.根据文章id找到对应的文章 2. L ...
- ElasticSearch第四步-查询详解
ElasticSearch系列学习 ElasticSearch第一步-环境配置 ElasticSearch第二步-CRUD之Sense ElasticSearch第三步-中文分词 ElasticSea ...
- Solr安装入门、查询详解
Solr安装入门:http://www.importnew.com/12607.html 查询详解:http://www.360doc.com/content/14/0306/18/203871_35 ...
- MySQL简单查询详解-单表查询
MySQL简单查询详解-单表查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查询的执行路径 一条SQL查询语句的执行过程大致如下图所示: 1>.客户端和服务端通过my ...
- (转)Mysql 多表查询详解
MySQL 多表查询详解 一.前言 二.示例 三.注意事项 一.前言 上篇讲到mysql中关键字执行的顺序,只涉及了一张表:实际应用大部分情况下,查询语句都会涉及到多张表格 : 1.1 多表连接有 ...
- 分享知识-快乐自己:Hibernate 中Criteria Query查询详解
1):Hibernate 中Criteria Query查询详解 当查询数据时,人们往往需要设置查询条件.在SQL或HQL语句中,查询条件常常放在where子句中. 此外,Hibernate还支持Cr ...
- Mysql高手系列 - 第12篇:子查询详解
这是Mysql系列第12篇. 环境:mysql5.7.25,cmd命令中进行演示. 本章节非常重要. 子查询 出现在select语句中的select语句,称为子查询或内查询. 外部的select查询语 ...
- Solr查询详解
前言:上节是关于Solr的开发准备工作:.NET开发过程中的全文索引使用技巧之Solr(http://www.cnblogs.com/johnwood/p/3447242.html) 这节重点是讲So ...
随机推荐
- andoid-sdk 安装时出现 Stopping ADB server failed(code -1) 错
出错原因: cmd在path路径找不到adb命令,是因为adb.exe文件存在于android-sdk安装目录platform-tools/子目录下,要将这个路径配置到环境变量里面. 解决方案: 按照 ...
- C++标准命名空间std
输入输出要用到这个. 标准C++库的所有的标识符都是在一个名为std的命名空间中定义的,或者说标准头文件(如iostream)中函数.类.对象和类模板是在命名空间 std中定义的.std是standa ...
- QT编译错误:Project ERROR: This example requires Qt to be configured with -opengl desktop
学习QT场景视图,对一个Boxes的例子比较感兴趣,于是去编译学习,结果编译不能通过(使用的是QT5.12): Project ERROR: This example requires Qt to b ...
- 判断一个字符串同时出现几个字符的C#版本和JS版本
C#版本,参考:http://www.cnblogs.com/dudu/p/3841256.html JS版本是我群友写的: var str="abcdef"; var arr=[ ...
- 改造phpcms-v9自带的字符串截取函数
1.phpcms-v9自带的字符串截取函数在phpcms/libs/functions/global.func.php文件中: /** * 字符截取 支持UTF8/GBK * @param $stri ...
- linux 使用supervisor来管理进程
现在假设一个脚本是,hello.py,内容是 fo = open('xx.txt','w') while 1: fo.write('hello world') print('hi') time.sle ...
- Linux Device Tree
原创博文,转载请标明出处--周学伟 http://www.cnblogs.com/zxouxuewei/ 设备树使用手册 基本数据格式 设备树是一个包含节点和属性的简单树状结构.属性就是键-值对,而 ...
- 微信公众号支付-Common
using System.Web; /// <summary> /// 公共帮助类 /// </summary> public class Common { private H ...
- Cordova 问题点备忘
1 cordova File插件问题 cordova 5.0创建本地文件夹 目录变成了 file:///data/user/0/com.xxx.xxx/xxx 4.0 是 file:///storag ...
- Weblogic12 集群部署
1. 集群配置规划 服务器名称 地址和端口 AdminServer 192.168.15.1:7001 ManagedServer1 192.168.15.1:8001 ManagedServer2 ...