• 技术文章 >后端开发 >php教程

    PHP如何实现模糊查询(图文代码)

    不言不言2018-08-18 17:34:34原创14464
    本篇文章给大家带来的内容是关于PHP如何实现模糊查询(图文代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    简介

    功能

    PHP用户查询器案例分析这里写图片描述

    课程目标

    课程重点

    课程案例(效果图)

    这里写图片描述
    这里写图片描述数据库设计

    用户表(user):

    CREATE TABLE user(    
    `uid` int(10) AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID',    
    `username` varchar(30) NOT NULL DEFAULT '' COMMENT '用户名',    
    `password` varchar(6) NOT NULL DEFAULT '' COMMENT '密码',    
    `sex` char(2) NOT NULL DEFAULT '保密' COMMENT '性别',    
    `email` varchar(40) NOT NULL DEFAULT '' COMMENT '邮箱',    
    `hobby` varchar(255) NOT NULL DEFAULT '' COMMENT '兴趣爱好',    
    KEY `username`(`username`)//索引
    )ENGINE=MyISAM DEFAULT CHARSET=UTF8 COMMENT='用户表'

    索引的好处:
    如果按照某个条件去检索数据,如果这个条件字段没有建立索引,查询的时候是会遍历整张表,如果你建立了索引,查询的时候就会根据索引来查询,进而提高查询性能

    Mysql模糊查询语法

    SQL匹配模式
    代码实现:
    SELECT * FROM user WHERE username like 'l%';
    SELECT * FROM user WHERE username like '%e';
    SELECT * FROM user WHERE username like '%o%';
    SELECT * FROM user WHERE username like '___';//三个_,表示username为三个字符的结果集
    SELECT * FROM user WHERE username like '_o%';//第二个字符为o
    正则表达式匹配模式
    eg:x* 表示匹配任何数量的x字符
    eg:[abc] 匹配字符a、b后者c
       [a-z] 匹配任何字母   
       [0-9] 匹配任何数字   
       [0-9]* 匹配任何数量的任何数字   
       [a-z]* 匹配任何数量的任何字母
    eg:^a 表示以字母a开头
    eg:s$ 表示以字母s结尾
    code:SELECT * FROM user WHERE username REGEXP '^l';
    SELECT * FROM user WHERE username REGEXP '...';

    PS:如果仅使用.通配符,有几个点通配符,假设N个,那么匹配模式表示大于等于N个
    这里写图片描述

    ^...$          //表示只能为三个字符
    SELECT * FROM user WHERE username REGEXP '^...$';

    这里写图片描述

    案例

    开发流程

    这里写图片描述

    源码分析

    <?php
    //关键字
    $keywords = isset($_POST['keywords'])?$_POST['keywords']:'';
    //连接数据库,php7废弃了mysql_connect推荐使用
    mysqli_connect$link = mysqli_connect(    "localhost:3306",    "root",    "root",    "mook");
    if(!empty($keywords)){    
    $sql = "SELECT * FROM user WHERE username like '%{$keywords}%' ";
    }else{    
    $sql = "SELECT * FROM user";
    }$usersArr = [];$result = $link->query($sql);while($row = $result->fetch_assoc())
    {    //简单高亮显示
        // $row['username'] = str_replace($keywords, "<font color='red'>".$keywords."</font>",$row['username']);
        //高亮显示,不区分关键字的大小写
        $usernameArr = preg_split('/(?<!^)(?!$)/u',$row['username']);    
        foreach ($usernameArr as $key => $value) {        
        if(strtoupper($keywords) == strtoupper($value)){            
        $usernameArr[$key] = "<font color='red'>".$value."</font>";
            }
        }    
        $row['username'] = join($usernameArr);    
        $usersArr[] = $row;
    }?><!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>php用户查询器</title>
    </head>
    <body>
        <h1>php模糊查询</h1>
        <form action="index.php" method="post">
            用户名:<input type="text" name="keywords" value="" />
            <input type="submit" value="提交查询" />
        </form>    
        <?php
            if(!empty($keywords)){            
            echo "查询关键词:<font color='red'>&nbsp;".$keywords."&nbsp;</font>结果!";
            }        
            $tableString = "<table width='500' border='1' cellpadding='5'>";        
            $tableString .= "<tr bgcolor='orange'><th>用户名</th><th>邮箱</th><th>性别</th></tr>";        
            if(!empty($usersArr)){           
             foreach ($usersArr as $key => $value) {                
            $tableString .= "<tr><td>" . $value['username']. "</td><td>" . $value['email'] . "</td><td>".$value['sex']."</td></tr>";
                }
            }else{           
             $tableString .="<tr><td colspan='3'>没有数据</td></tr>";
            }        
            $tableString .= "</table>";        
            echo $tableString;    
            ?>
            </body>
    </html>

    源码下载地址:

    链接:https://pan.baidu.com/s/1F8duu8G2iCa4xgNLBbiLCg 密码:96fn

    相关推荐:

    PHP实现会员账号只能唯一登录的代码实例

    PHP实现会员账号只能唯一登录的代码实例

    以上就是PHP如何实现模糊查询(图文代码)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP 模糊搜索
    上一篇:php和ajax怎么实现表格的实时编辑(附代码) 下一篇:php导出csv格式的Excel文件的实现代码
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• PHP数组函数知识汇总_php技巧• 分享常见的几种页面静态化的方法_php基础• 写一段简单的PHP建立文件夹代码_php基础• 浅析php中json_encode()和json_decode()_php基础• php学习笔记之面向对象
    1/1

    PHP中文网