Le contenu de cet article explique comment implémenter une requête floue (code graphique et texte) en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Introduction
Fonction
Analyse de cas de l'utilisateur PHP Queryer
Objectifs du cours
Points clés du cours
Cas de cours (Rendu)

Conception de base de données
Table utilisateur ( utilisateur):
1 2 3 4 5 6 7 8 9 | 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='用户表'
|
Copier après la connexion
Avantages de l'indexation :
Si vous récupérez des données selon une certaine condition, si le champ de condition n'est pas indexé, la table entière sera parcourue lors de l'interrogation. Si vous créez un index, la requête sera basée sur l'index, améliorant ainsi les performances de la requête
<. 🎜>
Syntaxe de requête floue MySQL
- Mode de correspondance SQL (le plus utilisé en développement)
- Modèle de correspondance d'expression régulière
Le modèle de correspondance SQL
1 2 3 4 5 6 | 代码实现:
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 '___';
SELECT * FROM user WHERE username like '_o%';
|
Copier après la connexion
.- correspond à n'importe quel caractère
*- correspond à 0 ou plusieurs caractères avant lui
Copier après la connexion
[] correspond à tous les caractères entre parenthèses
1 2 3 4 5 | eg:[abc] 匹配字符a、b后者c
[a-z] 匹配任何字母
[0-9] 匹配任何数字
[0-9]* 匹配任何数量的任何数字
[a-z]* 匹配任何数量的任何字母
|
Copier après la connexion
^ représente un certain caractère Ou le début de la chaîne
Copier après la connexion
$ représente un certain caractère ou le résultat de la chaîne
Copier après la connexion
Opérateurs utilisés pour les modèles de correspondance d'expressions régulières : REGEXP(RLIKE) ou NOT REGEXP(NOT RLIKE)
PS : si vous utilisez uniquement un caractère générique, il existe plusieurs caractères génériques de points, en supposant que N, alors le motif correspondant indique supérieur ou égal à N
1 2 | code:SELECT * FROM user WHERE username REGEXP '^l';
SELECT * FROM user WHERE username REGEXP '...';
|
Copier après la connexion

Le nombre exact de caractères
1 2 | ^...$
SELECT * FROM user WHERE username REGEXP '^...$';
|
Copier après la connexion
Cas
Processus de développement
Analyse du code source
Source adresse de téléchargement du code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | <?php
$keywords = isset( $_POST ['keywords'])? $_POST ['keywords']:'';
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())
{
$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'> " . $keywords . " </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>
|
Copier après la connexion
Lien : https://pan.baidu.com/s/1F8duu8G2iCa4xgNLBbiLCg Mot de passe : 96fn
Recommandations associées :
Exemple de code PHP pour réaliser que le compte membre ne peut être connecté qu'en tant que seul
Exemple de code PHP pour réaliser que le compte membre ne peut être connecté qu'en tant que seul
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!