• 解密PHP模糊查询技术


    慕课网解密PHP模糊查询技术学习笔记!

    对于以前知识的巩固,可以跳跃式选择性观看!

    /**
     *解密PHP模糊查询技术
     *
     *本节课程是PHP模糊查询技术专题视频之课程引入
     *大纲:
     *    模糊查询的实用性,应用场景;站内搜索技术;
     *
     *
     *PHP用户查询器 案例演示
     *(关键字高亮技术)
     *
     *程序流程:
     *客户端提交关键词,
     *程序端获取关键词,通过PHP模糊查询技术到用户信息库查询相关用户,
     *将查询结果返回到客户端。
     *
     *课程目标:
     *1掌握PHP模糊查询技术的应用
     *2独立完成站内新闻搜索功能
     *3多关键词模糊查询
     *
     *
     *第二节视频:基础数据的建立
     *
     *用户编号、用户姓名、登录密码、性别、其他的
     *
    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 = '用户表';
     *
     *建立索引:
     *数据量很小体现不出来;
     *如果按照某个条件去检索数据,
     *如果这个条件字段没有建立索引,查询的时候就是遍历整张表,
     *如果建立了索引,查询的时候就会根据索引来查询,进而提高查询性能
     *插入一些数据
     *
    INSERT INTO user
    values
    (null,'apple','123321','男','4353@qq.com','篮球'),
    (null,'orange','463546','男','345435345@qq.com','足球'),
    (null,'pea','5465','女','313556@qq.com','乒乓球'),
    (null,'bananer','87957','女','7657626@qq.com','排球'),
    (null,'coco','1254','男','968756@qq.com','冰球'),
    (null,'hello','7542','女','1435345@qq.com','羽毛球'),
    (null,'hair','345464','男','5464657@qq.com','溜溜球'),
    (null,'lucy','341545','男','78768@qq.com','橄榄球'),
    (null,'hanmeimei','57653','女','455635@qq.com','台球'),
    (null,'lilei','353535','男','464234@qq.com','皮球'),
    (null,'zhangsan','976854','女','156656@qq.com','气球');
     *
     *查询语法入门:精确查询、模糊查询
     *
     *返回结果有且只有一条的SQL查询是精确查询
     *应用场景:
     *用户注册登录,用户注册时判断用户名是否已经注册,登录的时候查询账号密码
     *单挑数据的更新
     *
     *模糊查询返回的结果是不确定的
     *应用场景:
     *站内搜索。
     *
     *以上两种查询返回的结果都有可能为空
     *
     *语法的入门
     *MySQL模糊查询语法支持两种匹配格式
     *1.SQL匹配模式(开发中应用最多的一种)
     *2.正则表达式匹配模式(不推荐)
     *
     *SQL匹配模式:
     *1.使用SQL匹配模式,不用使用操作符=或者!=,
     *而是用操作符LIKE或者NOT LIKE
     *2。使用SQL匹配模式,MySQL提供了两种通配符。
     *% 表示任意数量的任意字符(包括0个)
     *_ 表示任意单个字符
     *3.使用SQL匹配模式,如果匹配格式中不包含以上两种通配符中的任意一个,
     *其查询效果等同于=或者!=。
     *4.使用SQL匹配模式,默认情况下是不区分大小写的。
     *
     *
     *
     *两种通配符的使用
     *查询用户名已某个字符开头的用户
     *
    SELECT * FROM user WHERE username LIKE '0%' ;
     *查询用户名已某个字符结尾的用户
    SELECT * FROM user WHERE username LIKE '%o' ;
     *查询用户名包含某个字符的用户
    SELECT * FROM user WHERE username LIKE '%o%' ;
     *
     *查询用户名长度为三的用户
    SELECT * FROM user WHERE username LIKE '____' ;
     *
     *查询用户名第二个字符为o的用户
    SELECT * FROM user WHERE username LIKE '_o%' ;
     *
     *
     *
     *
     *正则表达式匹配模式
     * . 匹配任意单个字符
     * * 匹配0个或者多个在它前面的字符
     *        X* 表示任意数量的X字符
     * [..] 匹配中括号中的任意字符
     *        [abc]匹配字符a或b或c
     *        [a-z]匹配任意字母
     *        [0-9]任何数字
     *        [0-9]*匹配任何数量的任何数字
     *    ^ 表示以某个字付或者字符串开头
     *        ^a表示已字母a开头
     *    % 表示已某个字符或者字符串结尾
     *        s$表示以字母s结尾
     *
     *使用正则表达式匹配模式使用操作符是
     *REGEXP或NOT REGEXP(RLIKE 或 NOT RLIKE)
     *
     *如果使用一个正则表达式来匹配,其模式有别于SQL模式
     *
     *查询用户名以字符l开头的用户
     SQL匹配模式 l%
     正则表达式 ^1
     SELECT * FROM user WHERE username REGEXP '^l'
     *
     *查询用户名正好是4个字符的用户
     SQL匹配模式 ____
     正则表达式 ....
     SELECT * FROM user WHERE username REGEXP '....'
     所有的用户名四个以及四个以上字符的用户都查询出来的!!!!!

     正则表达式匹配模式,其正则表达式出现在匹配字段的任意位置,其模式就算匹配了。

     注意:如果仅用通配符 . 来匹配,匹配模式表示大于等于N个字符;
     这样就可以了:
     SELECT * FROM user WHERE username REGEXP '^.....$'
     *
     *
     *
     *PHP模糊查询技术案例开发;
     *获取关键词
     *实现用户信息检索
     *关键词高亮:技术点是利用PHP的字符串替换功能;
     在遍历的时候,对用户名关键字进行高亮
     while($row = mysql_fetch_assoc($res)){
        $row['username'] = str_replace($keyword,'<font color="red"'.$keywords.'</font>',$row['username']);
        $user[]=$row;
     }
     *
     *基础作业:开发一个站内新闻搜索功能(根据哟过户输入的标题查询相关新闻)
     *扩展作业,站内新闻搜索功能(用户可以输入多个关键词进行搜索,多个关键词以空格或者逗号隔开)
     *
     *
     *
     *FULLTEXT全文索引
     *数据量巨大的时候,百万级以上;
     *
     *全文索引在绝大部分的网站中是不会使用的;
     *数据量巨大,百万以上的时候,用PHP的模糊查询技术Like效率是比较低的,而且也比较耗费性能;
     *
     *使用时注意:
     *1)MySQL使用全文搜索功能,数据表引擎必须是MyISAM;
     *2)MySQL全文搜索功能不支持中文,如果需要支持中文需要通过特殊的处理;
     *
     *
     *
     *     
     *
     */

  • 相关阅读:
    Pytorch手写线性回归
    numpy+sklearn 手动实现逻辑回归【Python】
    如何用TensorFlow实现线性回归
    进程、线程和携程的通俗解释【刘新宇Python】
    即时通信WebSocket 和Socket.IO
    gRPC【RPC自定义http2.0协议传输】
    Django中MySQL事务的使用
    模拟电磁曲射炮_H题 方案分析【2019年电赛】【刘新宇qq522414928】
    Gitflow工作流
    雪花算法【分布式ID问题】【刘新宇】
  • 原文地址:https://www.cnblogs.com/eis13/p/5553931.html
Copyright © 2020-2023  润新知