php mysql 站内搜索_thinkphp站内搜索功能

本文介绍了如何在ThinkPHP框架下实现简单的站内搜索功能,主要针对博客标题进行搜索,以降低数据库查询压力。通过`LIKE`关键字在标题中匹配搜索词,并结合分页展示搜索结果,提高搜索效率。
摘要由CSDN通过智能技术生成

为了方便查找内容,不免要在网站添加搜索功能,要注意的是搜索虽然方便可是也增加了对数据库查询的压力。

所以啊,搜索是双刃剑,用的时候还是要注意场合,做一下优化之类的。

我用的是thinkphp,在博客也加个搜索功能,但是我只想搜索标题中含有的,别浪费太多资源搜索全文了

4e8554df55fcd788688d1864a1f93a17.gif

下面开始举例子:

这是thinkphp里面一个function:

//搜索功能

public function search(){

$blog = D('blogs'); //这是实例化我的数据表

$search_words = I('post.search_words'); //这是获取搜索关键词

$data = array();//定义一个空数组

$data['title'] = array("like","%".$search_words."%");//查询数据库里面标题中含有关键词的数据

$result = $blog -> where($data) ->select();//选择上一步查询到的结果

$this -> assign('lists',$result);//传送到前端模板文件

$this -> display();//这里是调用模板

}

这里用了like关键词。

这样就可以在模板中做一个循环显示结果了:

还可以自己修改一下排序等,优化一下搜索。

a05ce88afc3ad1ae5dd4a216f9a649a7.gif

注意:用get获取关键词对分页可以直接进行,用post方式要进行其他设置,下面我是以get方式的案例,这样可以给搜索结果分分页。

//搜索功能

public function search(){

$blog = D('blogs');

$setting = D('settings');

$configs = $setting -> showAll();

$search_words = I('get.search_words');//获取搜索关键词

$data = array();

$data['title'] = array("like","%".$search_words."%"); //进行搜索查询

$count = $blog->where($data) -> count();//统计查询结果总数

$Pages = new \Think\Page($count,$configs['index_count']);//实例化分页类

$lists = $blog -> order('id desc')->limit(0,10) ->select();//最近文章用

$result = $blog ->where($data)-> order('id desc')->limit($Pages->firstRow.','.$Pages->listRows)->select();

$page = $Pages -> show();

$this -> assign('list',$lists);

$this -> assign('blogs',$result);

$this -> assign('page',$page );

$this -> assign('config',$this -> config);

$this -> display();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值