Maison >développement back-end >Problème PHP >Comment effectuer une requête floue en PHP

Comment effectuer une requête floue en PHP

醉折花枝作酒筹
醉折花枝作酒筹original
2021-04-07 10:38:534937parcourir

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.

Comment effectuer une requête floue en PHP

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.

Requête précise

Le résultat renvoyé contient une seule requête SQL

Scénario d'application : enregistrement et connexion de l'utilisateur

Requête floue

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'

# %o%

SELECT * FROM user WHERE nom d'utilisateur LIKE '%o%' (Couramment utilisé)

④#La longueur du nom d'utilisateur de la requête est de 3 utilisateurs

#___

SELECT * FROM user WHERE nom d'utilisateur LIKE '___';

⑤#Deux types Combinaison de caractères génériques

#Requête aux utilisateurs dont le deuxième caractère est o

# _o%

SELECT * FROM user WHERE nom d'utilisateur LIKE '_o% ';

Modèle de correspondance d'expression régulière (obsolète)

Wildcard

Correspond à n'importe quel caractère unique

<.> . * 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 REGEXPExplication : Comme dans l'exemple suivantRLIKENOT 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 ___

Expression régulière ... ? Est-ce le cas


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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn