前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >like多数组模糊查询

like多数组模糊查询

作者头像
php007
发布2020-03-06 14:32:48
1.5K0
发布2020-03-06 14:32:48
举报
文章被收录于专栏:PHP专享栏

thinkphp---like模糊查询

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

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

代码语言:javascript
复制
$where['title'] = array('like','%'.$words.'%');
$where['title'] = array('like',array('%'.$words.'%','%'.$wordss.'%'));
$where['title'] = array(array('like','%'.$words.'%'),array('like','%'.$wordss.'%'));

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

代码语言:javascript
复制
$words = "吃";
$where['title'] = array('like','%'.$words.'%');
$list = $TagDB->where($where)->select();

这样执行的Sql是:

代码语言:javascript
复制
SELECT * FROM `tp_keywords_sanqi` WHERE `title` LIKE '%吃%'

这个可以查询多个字段:

代码语言:javascript
复制
$where['title'] = array('like','%'.$words.'%');
$where['description'] = array('like','%'.$words.'%');
$list = $TagDB->where($where)->select();

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

例如:

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

代码语言:javascript
复制
$words = "怎样";
$wordss = "作用";
$where['title'] = array('like',array('%'.$words.'%','%'.$wordss.'%'));
$list = $TagDB->where($where)->select();

执行的Sql是这样的:

代码语言:javascript
复制
SELECT * FROM `tp_keywords_sanqi` WHERE (`title` LIKE '%怎样%' OR `title` LIKE '%作用%')

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

代码语言:javascript
复制
$words = "怎样";
$wordss = "作用";
$where['title'] = array(array('like','%'.$words.'%'),array('like','%'.$wordss.'%'));
$list = $TagDB->where($where)->select();

执行的sql是这样的:

代码语言:javascript
复制
SELECT * FROM `tp_keywords_sanqi` WHERE ( `title` LIKE '%怎样%' AND `title` LIKE '%作用%' )

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

代码语言:javascript
复制
$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);

具体示例:

代码语言:javascript
复制
$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:

代码语言:javascript
复制
SELECT * FROM `tp_keywords_sanqi` WHERE ( `title` LIKE '%作用%' AND `title` LIKE '%功效%' )

目的达到!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 风帆 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • thinkphp---like模糊查询
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档