PHP如何?模糊查詢(圖文代碼)

來源:互聯網
上載者:User
本篇文章給大家帶來的內容是關於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匹配模式(開發中應用最多的一種)

  • Regex匹配模式

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
Regex匹配模式
  • . 匹配任意單個字元

  • * 匹配0個或多個在他前面的字元

eg:x* 表示匹配任何數量的x字元
  • [] 匹配括弧中的任一字元

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

eg:^a 表示以字母a開頭
  • $ 表示已某個字元或者字串結果

eg:s$ 表示以字母s結尾
  • 使用Regex匹配模式使用的操作符:REGEXP(RLIKE) 或者NOT REGEXP(NOT RLIKE)

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.