Maison > Article > développement back-end > Comment effectuer une requête floue en PHP
Méthode de requête floue : 1. Utilisez le modèle de correspondance SQL et l'opérateur utilise "LIKE" ou "NOT LIKE". Lors de la correspondance, il n'est pas sensible à la casse. 2. Utilisez le modèle de correspondance d'expression régulière et le ; L'opérateur utilise "REGEXP" ou "NOT REGEXP", l'expression régulière peut apparaître n'importe où dans le champ correspondant.
L'environnement d'exploitation de ce tutoriel : système Windows7, version PHP7.1&&mysql8, ordinateur Dell G3.
Lors de la création d'un site Web, nous utilisons souvent la fonction d'utilisation de mots-clés pour trouver certaines ressources sur le site Web. À l'heure actuelle, nous devons souvent utiliser des requêtes floues. Aujourd'hui, j'ai découvert la requête floue de PHP, et maintenant je vais la résumer.
Ce qui précède est l'organigramme de la requête floue.
Pour faciliter la démonstration, une simple table de base de données doit être créée.
KEY ‘username’(‘username’)
est un indice, très important.
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 la requête. Si vous créez un index, la requête sera ensuite effectuée en fonction de l'index, améliorant ainsi les performances de la requête.
Le résultat renvoyé contient une seule requête SQL
Scénario d'application : enregistrement et connexion de l'utilisateur
Retourner des résultats incertains
Scénario d'application : Recherche sur site
Remarque : Les résultats renvoyés par les deux requêtes ci-dessus peuvent être vides.
La technologie de requête floue prend en charge 2 formats de correspondance : 1. Mode de correspondance SQL (le plus couramment utilisé en développement) ; 2. Mode de correspondance d'expression régulière (non recommandé)
Mode de correspondance SQL
1. Lorsque vous utilisez le mode de correspondance SQL, vous ne pouvez pas utiliser l'opérateur = ou !=, mais utilisez l'opérateur LIKE ou NOT LIKE ; . En utilisant le mode de correspondance SQL, MYSQL fournit 2 types de caractères génériques. % représente n'importe quel nombre de caractères (y compris 0) _ représente n'importe quel caractère unique ;
3. Utilisez le mode de correspondance SQL, si le format de correspondance ne contient aucun des deux caractères génériques ci-dessus. L'effet de requête est équivalent à = ou !=;
4. Utilisez le mode de correspondance SQL, qui n'est pas sensible à la casse par défaut.
Cinq scénarios de requête
① #Requête des utilisateurs dont le nom d'utilisateur commence par un certain caractère
#Requête des utilisateurs dont le nom d'utilisateur commence par le caractère 'l'
# l%
SELECT * FROM user WHERE nom d'utilisateur LIKE 'l%';
② #Requête du nom d'utilisateur avec un certain caractère Utilisateurs se terminant par
#Requête des utilisateurs dont le nom d'utilisateur se termine par un certain caractère 'e'
#%e
SELECT * FROM user WHERE username LIKE '% e'
③ #Requête des utilisateurs dont le nom d'utilisateur contient un certain caractère
#Requête des utilisateurs dont le nom d'utilisateur contient le caractère 'o'
④#La longueur du nom d'utilisateur de la requête est de 3 utilisateurs
⑤#Deux types Combinaison de caractères génériques
#Requête aux utilisateurs dont le deuxième caractère est o
Modèle de correspondance d'expression régulière (obsolète)
Wildcard
<.> . * Correspond à 0 ou plusieurs caractères
avant [ ..] Tous les caractères entre parenthèses dans la correspondance
[ABC] correspondant au caractère A b ou c
<.> [a-Z] correspondant à n'importe quelle lettre[0-9] correspondant à n'importe quelle lettre correspondant à l'un des chiffres correspondants
🎜> ^a signifie qu'il commence par la lettre a
$ signifie qu'il se termine par un certain caractère ou une certaine chaîne
s$ signifie qu'il se termine par la lettre s
Utiliser le modèle de correspondance d'expression régulière Opérateurs utilisés
ou(
ou)
Si une expression régulière est utilisée pour correspondre, le modèle est différent de le modèle SQL REGEXP
NOT REGEXP
Explication : Comme dans l'exemple suivantRLIKE
NOT RLIKE
# Interroger les utilisateurs dont le nom d'utilisateur commence par le caractère l
Modèle de correspondance SQL l%
Régulier expression ^l
SELECT * FROM user WHERE username REGEXP '^l';
#Interroger les utilisateurs dont le nom d'utilisateur comporte exactement 3 caractères
Modèle de correspondance SQL ___
SELECT * FROM user FROM username WHERE username REGEXP '...';
Pourquoi tous les utilisateurs sont-ils interrogés ? Étant donné qu'une expression régulière correspond à un modèle, le modèle correspond si l'expression régulière apparaît n'importe où dans le champ correspondant. Donc... correspond aux noms d'utilisateur contenant trois lettres ou plus, et tous les noms d'utilisateur du tableau correspondent, donc tous les utilisateurs sont interrogés.
Remarque :
Si vous utilisez uniquement le caractère générique pour faire la correspondance, il y a N caractères génériques. Ensuite, le modèle de correspondance signifie qu'il est supérieur ou égal à N caractères. Si vous souhaitez exprimer le nombre exact de caractères, le format est le suivant : ^...$
SELECT * FROM user WHERE username REGEXP '^...$';
Apprentissage recommandé :
Tutoriel vidéo php
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!