php单表多字段多关键字搜索的类适用于小型网站和后台
来源:互联网 发布:mac酷狗怎么切换歌曲 编辑:程序博客网 时间:2024/05/21 10:20
这里发一个自己写的php搜索的类,数据表庞大的话当然是不适合用这个的,会比较慢,但是对于很多地方还是适用的,并且查询到的结果,其关键字可以高亮显示
/* 这是一个多关键字多字段单表搜索的类 * 张伟2012-09-23 qq:3340971 */ class Search{ private $host='localhost'; private $user='root'; private $pwd='123456'; private $conn; private $dbname='hshb2c_com'; private $charset='utf8'; public $tips='';//提示信息 public static $limit="/[\+&\s]+/";//分割符号 public static $arrKey=array(); private static $instance; public static function getInstance(){ if(!self::$instance instanceof self){ self::$instance=new self(); } return self::$instance; } private function __construct(){ date_default_timezone_set('Asia/Shanghai'); $this->conn=@mysql_connect($this->host,$this->user,$this->pwd); if(!$this->conn){ $this->tips='数据库连接失败!'.mysql_error(); return false; } mysql_query("SET NAMES '{$this->charset}'"); mysql_query("SET CHARACTER_SET_CLIENT='{$this->charset}'"); mysql_query("SET CHARACTER_SET_RESULTS='{$this->charset}'"); if(!mysql_select_db($this->dbname,$this->conn)){ $this->tips='不存在数据库:'.$this->dbname.',请核对后再试!'.mysql_error(); return false; } } /*执行单表查询并返回结果(二维数组) *$str:http提交的要查询的字符串 */ public function query($str,$tbname,$arrSearchField,$arrShowField){ $str=self::createLike($str,$arrSearchField); foreach(self::$arrKey as $v){ $arrReplaceField[]='<font color="red">'.$v.'</font>'; } $list_field=implode("`,`",$arrShowField); $list_field="`$list_field`"; $sql="SELECT $list_field FROM `$tbname` WHERE $str"; $result=mysql_query($sql,$this->conn); $num=mysql_num_rows($result); $item=array(); $num_field=count($arrShowField); if($num!=0){ $i=0; while($row=mysql_fetch_assoc($result)){ for($j=0;$j<$num_field;$j++){ if(in_array($arrShowField[$j],$arrSearchField)){ $fieldValue=str_replace(self::$arrKey,$arrReplaceField,$row[$arrShowField[$j]]); }else{ $fieldValue=$row[$arrShowField[$j]]; } $item[$i][$arrShowField[$j]]=$fieldValue; } $i++; } return $item; }else{ return false; } } //生成多个字段的like查询条件 public static function createLike($str,$arrSearchField){ self::$arrKey=preg_split(self::$limit,$str); $strLike=""; foreach($arrSearchField as $v1){ foreach(self::$arrKey as $v2){ $strLike.="`$v1` LIKE '%$v2%' OR "; } } return substr($strLike,0,-4); } }
- php单表多字段多关键字搜索的类适用于小型网站和后台
- php mysql ajax 单表多字段多关键词查询
- PHP+Mysql多关键字,多字段 生成SQL语句的函数
- 单表多字段查询
- php+mysql多字段模糊搜索
- 单表多字段MySQL模糊查询的实现
- mysql多关键字多字段模糊查询
- MySQL多关键字多字段模糊查询
- 多字段模糊搜索,asp的程序
- MySQL单表多字段模糊查询
- MySQL单表多字段模糊查询
- Lucene多字段搜索
- 多字段搜索 (二)
- elasticsearch多字段搜索
- Lucene进阶操作,单字段、多字段和布尔搜索
- Practice Every Day_14(多字段搜索和多索引搜索)
- Django 多对多字段的更新和插入数据
- lucene-多字段、多索引搜索与多线程搜索
- android之contentProvider的使用以及为其添加观察者(ContentObserver)
- 单链表基本操作(一)
- C++学习:一个通用ini配置文件操作类
- 堆和栈的区别
- PHP导出带样式的Excel
- php单表多字段多关键字搜索的类适用于小型网站和后台
- JAVASE学习笔记二
- 指向运算符(->)与 成员运算符(.) 区别详解
- FPGA_Embedded_9_28
- 看月亮爬上来
- “927工程测绘关键技术与示范应用”通过科技部验收
- linux常用系统调用函数
- Android环境配置及模拟器启动不了
- FPGA_Embedded_9_29~10_6