问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ThinkPHP关键字搜索(从MySQL数据库中)

发布网友 发布时间:2022-04-06 07:47

我来回答

3个回答

懂视网 时间:2022-04-06 12:09

二、建立搜索条件

如何使用搜索器?我们结合实例来讲解。

微信截图_20200626170328.png

我们有三个搜索条件分别是:goods_cate_id(分类筛选)、goods_status(状态筛选)、goods_name(关键字筛选)。

我们先建立三个搜索方法:

public function searchGoodsCateIdAttr($query, $value)
 {
 $query->where('goods_cate_id','in', $value);
 }

 public function searchGoodsStatusAttr($query, $value)
 {
 $query->where('goods_status','=', $value);
 }

 public function searchGoodsNameAttr($query, $value)
 {
 $query->where('goods_name','like', '%'.$value.'%');
 }

要特别注意,搜索方法的命名,我们必须严格按照官方手册中的要求定义。比如说我们数据表搜索字段为goods_cate_id,那么在定义方法的时候如下都是错误的:

1、public function searchGoodsCateId($query, $value),少Attr。

2、public function searchGoodsCateIDAttr($query, $value),驼峰写法错误。

3、public function searchGoodsCateAttr($query, $value),少Id驼峰写法错误。

4、private function searchGoodsCateIdAttr($query, $value),必须是public。

三、触发搜索

搜索器只有在调用 withSearch 方法的时候触发。

$goodsData=Goods::name('goods')->withSearch(['goods_cate_id','goods_status','goods_name'],[
  'goods_cate_id'=>$cateChilerenId,
  'goods_status'=>$goods_status,
  'goods_name'=>$goods_name
  ])->paginate(10);

另外,搜索器除了可以做搜索,同时也可以做排序功能,在这里就不再举例。

在调试的时候,我们还可以打印下sql语句,如果没有我们想要的结果,我们可以直接分析sql语句。

echo Goods::getLastSql();

热心网友 时间:2022-04-06 09:17

提交的时候记得把默认的值去掉  才能判断是否有值..


//这个是把三个搜索关键词作为独立的因子搜索
function search(){
   if(isset($_POST['id']) && intval($_POST['id'])>0){
  $sql="select * from tbl  where id=".intval($_POST['id'])." ";
   }
   
  if(isset($_POST['name'])){
         $sql.="union select * from tbl where name=".$_POST['name']." ";
   }
  if(isset($_POST['content'])){
       $sql.="union select * from tbl where content like '%".$_POST['content']."%' ";
   }
   $s = M('search');
   $result=$s->query($sql);
  }
  
}
//以下是把三个搜索当作条件进行搜索  有筛选的味道
function search(){
   $where="1=1";
   if(isset($_POST['content'])){
     $where.=" and content like '%$_POST[content]%'";
   }
   
   if(isset($_POST['content'])){
     $where.=" and name = '$_POST[name ]'";
   }
   
   if(isset($_POST['id']) && intval($_POST['id'])>0){
     $where.=" and id= '$_POST[id]'";
   }
   if($where != '1=1'){
     $sql="select * from tbl $where";
     }else{
       throw new Exception('没有输入搜索词');
   }
 

   $s = M('search');
   $result=$s->query($sql);
  }
  
}

热心网友 时间:2022-04-06 10:35

1、数据库及表的建立和连接
2、表单提交
3、模糊查询http://doc.thinkphp.cn/manual/query.html

不知道你完成了哪几步?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
Request对象语法 9,django中request对象 塞尔达传说时之笛火之神殿Boss房间怎么去 ...的圆形地方怎么上去?打完BOSS后才发现没去过,但我 榆中兴隆山旅游路线 ...兴隆山校区到哪个公交车站最近?应该怎么乘公交车?打车的话得多少钱... 从般若寺到兴隆山法院怎么坐公交车,最快需要多久 那些属于国有经济,哪些属于集体经济 ...丢手机,生病,丢工作,怎么转运啊,谁能告诉我,我快疯了 阴历十月又叫什么月 thinkphp如何做搜索网站 你好!我的电脑出现了504网关超时怎么解决啊!请赐教! 504 Gateway Time-out报错,要怎么解决呢? 网站频繁出现502和504错误,是咋回事? 如何解决“504 Gateway Time-out”错误 网站打开错误,网页上出现504错误该怎样解决? 访问php页面出现504 Gateway Timeout 怎么解决 手机和电脑是不是能同时登入同一个微信账号呀? 电脑微信与手机微信怎样不能同时登陆微信 一个能同时在手机和电脑上登陆吗? 怎么将手机微信跟电脑微信数据同步 Smarty模板引擎的介绍 php中,有哪些模板 php与smarty有什么关系 Smarty模板引擎的简介 为什么使用smarty Smarty模板引擎的功能 smarty是什么东西,主要干什么用的 什么是smarty模板引擎? smarty是什么? thinkphp怎么使用websocket? thinkphp6 index.php多应用时为什么自定义的入口无法访问多应用? 在thinkphp怎么才能在输入框中输入文字然后搜索MYSQL当中数据 并打印出来 如何使用thinkphp路由正则表达式优化地址链接 thinkphp6 assign方法未定义 遇到一个thinkphp6问题,暂时找不出问题所在特来求助? thinkphp怎么学习,看书?看视频? php框架用的tp3.2,调用外部地址超时,大并发,为什么把整站都搞成慢了,访问直接504了? "504 Gateway Time-out"是怎么回事? 504 gateway timeout错误 在线音乐播放器怎么实现搜索时用php在网上抓取歌曲 怎么用php代码做个简单的音乐播放器 有安装好网上下载的音乐整站程序(PHP)的朋友来看看 谁可以php写音乐播放器 求源代码 求一个PHP版的网页音乐播放器 大家给推荐一个php开发工具 哦! 求一个音乐站的PHP源码 我的网页是用php写的,我是菜鸟,要简单。 求一个功能强大,美关的php音乐网站系统!!! php做一个可以上传音乐到数据库并且可以在网页上播放出来的