首頁  >  文章  >  後端開發  >  PHP如何實作模糊查詢(圖文程式碼)

PHP如何實作模糊查詢(圖文程式碼)

不言
不言原創
2018-08-18 17:34:3416636瀏覽

這篇文章帶給大家的內容是關於PHP如何實現模糊查詢(圖文程式碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

簡介

  • 從本質上揭密PHP模糊查詢技術

功能

  • 根據輸入的關鍵字尋找相關使用者

PHP使用者查詢器案例分析PHP如何實作模糊查詢(圖文程式碼)

課程目標

  • 掌握PHP模糊技巧的應用

課程重點

  • #PHP模糊查詢的語法

  • # #PHP模糊查詢的應用

課程案例(效果圖)

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匹配模式(開發中應用最多的一種)

  • 正規表示式匹配模式

SQL比對模式
  • 使用SQL比對模式,不能使用運算元=或!=,而是使用運算子LIKE或NOT LIKE

  • 使用SQL匹配模式,MYSQL提供兩種通配符:

    ①%表示任意數量的任意字元(其中包含0個)
    ②_表示的任單一字元

  • 使用SQL匹配模式,如果符合格式中不包含以上兩種通配符的任一個,則其查詢效果等同於=或!=

  • 使用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
正規表示式匹配模式
  • . 符合任意單一字元

  • * 符合0個或多個在他前面的字元

  • #
    eg:x* 表示匹配任何数量的x字符
  • [] 匹配括號中的任意字元

  • #
    eg:[abc] 匹配字符a、b后者c
       [a-z] 匹配任何字母   
       [0-9] 匹配任何数字   
       [0-9]* 匹配任何数量的任何数字   
       [a-z]* 匹配任何数量的任何字母
  • ^ 表示以某個字元或字串開頭

  • eg:^a 表示以字母a开头
  • $ 表示已某個字元或字串結果

  • #
    eg:s$ 表示以字母s结尾
    ##使用正規表示式匹配模式使用的運算符:REGEXP(RLIKE) 或NOT REGEXP(NOT RLIKE)
  • code:SELECT * FROM user WHERE username REGEXP '^l';
    SELECT * FROM user WHERE username REGEXP '...';
PS:如果只使用.通配符,有幾個點通配符,假設N個,那麼匹配模式表示大於等於N個


PHP如何實作模糊查詢(圖文程式碼)

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

PHP如何實作模糊查詢(圖文程式碼)

PHP如何實作模糊查詢(圖文程式碼)##案例

開發流程

源碼分析

<?php
//关键字
$keywords = isset($_POST[&#39;keywords&#39;])?$_POST[&#39;keywords&#39;]:&#39;&#39;;
//连接数据库,php7废弃了mysql_connect推荐使用
mysqli_connect$link = mysqli_connect(    "localhost:3306",    "root",    "root",    "mook");
if(!empty($keywords)){    
$sql = "SELECT * FROM user WHERE username like &#39;%{$keywords}%&#39; ";
}else{    
$sql = "SELECT * FROM user";
}$usersArr = [];$result = $link->query($sql);while($row = $result->fetch_assoc())
{    //简单高亮显示
    // $row[&#39;username&#39;] = str_replace($keywords, "<font color=&#39;red&#39;>".$keywords."</font>",$row[&#39;username&#39;]);
    //高亮显示,不区分关键字的大小写
    $usernameArr = preg_split(&#39;/(?<!^)(?!$)/u&#39;,$row[&#39;username&#39;]);    
    foreach ($usernameArr as $key => $value) {        
    if(strtoupper($keywords) == strtoupper($value)){            
    $usernameArr[$key] = "<font color=&#39;red&#39;>".$value."</font>";
        }
    }    
    $row[&#39;username&#39;] = 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=&#39;red&#39;> ".$keywords." </font>结果!";
        }        
        $tableString = "<table width=&#39;500&#39; border=&#39;1&#39; cellpadding=&#39;5&#39;>";        
        $tableString .= "<tr bgcolor=&#39;orange&#39;><th>用户名</th><th>邮箱</th><th>性别</th></tr>";        
        if(!empty($usersArr)){           
         foreach ($usersArr as $key => $value) {                
        $tableString .= "<tr><td>" . $value[&#39;username&#39;]. "</td><td>" . $value[&#39;email&#39;] . "</td><td>".$value[&#39;sex&#39;]."</td></tr>";
            }
        }else{           
         $tableString .="<tr><td colspan=&#39;3&#39;>没有数据</td></tr>";
        }        
        $tableString .= "</table>";        
        echo $tableString;    
        ?>
        </body>
</html>

原始碼下載位址:

##連結:https://pan.baidu.com/s/1F8duu8G2iCa4xgNLBbiLCg 密碼:96fn相關推薦:

##PHP實作會員帳號只能唯一登入的程式碼實例

PHP實作會員帳號只能唯一登入的程式碼實例### ######

以上是PHP如何實作模糊查詢(圖文程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn