帝国cms后台之管理信息全文检索功能实现
微wx笑 2021-11-04【帝国CMS】 6 0关键字: 帝国cms EXISTS 全文检索
在使用帝国cms后台的管理信息功能的时候,特别管理未审核的没有发布的内容的时候,经常需要搜索文章的内容“newstext”字段是否包含某个关键词,但是本身是不支持的,所以就需要修改一下,这里记录一下实现的方法。
由于只是需要查询,所以这里用到了SQL语言中的功能。
修改文件:
/e/admin/ListAllInfo.php
修改方法:
1、在以下代码
$infotb=ReturnInfoMainTbname($tbname,$indexchecked);
下面添加
$infodatatb=ReturnInfoDataTbname($tbname,$indexchecked); //返回信息副表
2、修改条件查询语句,大约在229行
if($show==0)//搜索全部 { $where.=$and."(title like '%$keyboard%' or username like '%$keyboard%' or id='$keyboard' or keyboard like '%$keyboard%' or EXISTS(select id from `$infodatatb` dt where dt.id=$infotb.id and dt.newstext like '%$keyboard%'))"; }
关键的部分就是
or EXISTS(select id from `$infodatatb` dt where dt.id=$infotb.id and dt.newstext like '%$keyboard%')
EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False
EXISTS 指定一个子查询,检测 行 的存在。
语法: EXISTS subquery
参数: subquery 是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字)。
结果类型: Boolean 如果子查询包含行,则返回 TRUE ,否则返回 FLASE 。
本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/EmpireCMS/2021-11-04/786.html