ホームページ  >  記事  >  バックエンド開発  >  PHPでファジークエリを実装する方法(グラフィックコード)

PHPでファジークエリを実装する方法(グラフィックコード)

不言
不言オリジナル
2018-08-18 17:34:3416685ブラウズ

この記事の内容は、PHP でファジー クエリ (グラフィックとテキスト コード) を実装する方法に関するもので、一定の参考価値があります。必要な友人が参照することができます。お役に立てれば幸いです。

はじめに

  • PHP ファジー クエリ テクノロジの本質を明らかにする

関数

  • 入力したキーワードに基づいて関連するユーザーを検索します

##PHP ユーザークエリーのケース分析

PHPでファジークエリを実装する方法(グラフィックコード)##コースの目的

PHP ファジー テクノロジのアプリケーションをマスターする
  • コースのキー ポイント

PHP ファジー クエリの構文
  • PHP ファジー クエリ アプリケーション
  • コース ケース (レンダリング)

データベース設計PHPでファジークエリを実装する方法(グラフィックコード)
ユーザー テーブル( ユーザー):PHPでファジークエリを実装する方法(グラフィックコード)

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 には 2 つのワイルドカード文字が用意されています:
  • ①%は任意の文字数(0を含む)を表します
  • ② _



    ## で表される任意の 1 文字は SQL マッチング モードを使用します。マッチング形式に上記 2 つのワイルドカード文字が含まれていない場合、クエリの効果は = または !=# と同等になります。

  • ##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
  • 正規表現マッチング パターン
  • #.
任意の 1 文字と一致します
  • # その前の 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) or 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
//关键字
$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でファジークエリを実装する方法(グラフィックコード)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

関連記事

続きを見る