Heim > Artikel > Backend-Entwicklung > So führen Sie eine Fuzzy-Abfrage in PHP durch
Fuzzy-Abfragemethode: 1. Verwenden Sie den SQL-Abgleichsmodus und der Operator verwendet „LIKE“ oder „NOT LIKE“. Beim Abgleich wird die Groß-/Kleinschreibung nicht beachtet. 2. Verwenden Sie den Abgleichsmodus für reguläre Ausdrücke " oder „NOT REGEXP“ kann der reguläre Ausdruck an einer beliebigen Stelle im passenden Feld erscheinen.
Die Betriebsumgebung dieses Tutorials: Windows7-System, PHP7.1 und MySQL8-Version, Dell G3-Computer.
Beim Erstellen einer Website verwenden wir häufig die Funktion, Schlüsselwörter zu verwenden, um bestimmte Ressourcen auf der Website zu finden. Derzeit müssen wir häufig Fuzzy-Abfragen verwenden. Heute habe ich etwas über die Fuzzy-Abfrage von PHP erfahren, und jetzt fasse ich es zusammen.
Das Obige ist das Flussdiagramm der Fuzzy-Abfrage.
Zur Vereinfachung der Demonstration muss eine einfache Datenbanktabelle erstellt werden.
KEY ‘username’(‘username’)
ist der Index, sehr wichtig.
Vorteile des Index: Wenn Sie Daten gemäß einer bestimmten Bedingung abrufen und das Bedingungsfeld nicht indiziert ist, wird die gesamte Tabelle während der Abfrage durchlaufen. Wenn Sie einen Index erstellen, basiert die Abfrage auf dem Index . Dies verbessert die Abfrageleistung.
Das zurückgegebene Ergebnis ist eine und nur eine SQL-Abfrage
Anwendungsszenario: Benutzerregistrierung Login
Das Rückgabeergebnis ist unsicher
Anwendungsszenario: Site-Suche
Hinweis: Das Obige 2 Abfragen Das zurückgegebene Ergebnis ist möglicherweise leer.
Die Fuzzy-Abfrage-Technologie unterstützt zwei Matching-Formate: 1. SQL-Matching-Modus (der in der Entwicklung am häufigsten verwendete); 2. Regular-Expression-Matching-Modus (nicht empfohlen)
SQL-Matching-Modus
1 Im SQL-Matching-Modus können Sie nicht den Operator = oder != verwenden, sondern den Operator
2. Im SQL-Matching-Modus stellt MYSQL zwei Arten von Platzhalterzeichen bereit. % stellt eine beliebige Anzahl beliebiger Zeichen dar (einschließlich 0) _ stellt ein beliebiges einzelnes Zeichen dar;
3 Verwenden Sie den SQL-Matching-Modus, wenn das Matching-Format keines der oben genannten 2 Platzhalterzeichen enthält. Der Abfrageeffekt entspricht = oder !=; Verwenden Sie den SQL-Matching-Modus, bei dem die Groß- und Kleinschreibung standardmäßig nicht berücksichtigt wird.
Fünf Abfrageszenarien
① #Benutzer abfragen, deren Benutzername mit einem bestimmten Zeichen beginnt
#Benutzer abfragen, deren Benutzername mit dem Zeichen „l“ beginnt # l%
SELECT * FROM user WHERE username LIKE 'l %';
② #Benutzer abfragen, deren Benutzername mit einem bestimmten Zeichen endet
#Benutzer abfragen, deren Benutzername mit einem bestimmten Zeichen „e“ endet #%e
SELECT * FROM user WHERE username LIKE '%e'
#Benutzer abfragen, deren Benutzername das Zeichen „o“ enthält # %o%
SELECT * FROM user WHERE username LIKE '%o%' (häufig verwendet) ?? Benutzer abfragen dessen zweites Zeichen ist O
[ABC] entspricht den Buchstaben A, B oder C.
* [0-9]* entspricht einer beliebigen Zahl einer beliebigen Zahl
[a-z]* entspricht einer beliebigen Anzahl von Buchstaben ^ Wird durch einen bestimmten Zeichen- oder Zeichenfolgenanfang ausgedrückt ^ a stellt einen Buchstaben A dar. Das Ende von a Zeichen oder Zeichenfolge s$ bedeutet, dass es mit dem Buchstaben s endet Verwenden Sie den im Vergleichsmuster für reguläre Ausdrücke verwendeten Operator)
Wenn Sie zum Vergleichen einen regulären Ausdruck verwenden, unterscheidet sich das Muster vom SQL-Muster REGEXP
或 NOT REGEXP
(RLIKE
或NOT RLIKE
Regulärer Ausdruck ...
SELECT * FROM user FROM username WHERE username REGEXP '...';
Warum werden alle Benutzer abgefragt? Da ein regulärer Ausdruck mit einem Muster übereinstimmt, stimmt das Muster überein, wenn der reguläre Ausdruck irgendwo im passenden Feld erscheint. Also... sucht nach Benutzernamen, die drei oder mehr Buchstaben enthalten, und alle Benutzernamen in der Tabelle stimmen überein, sodass alle Benutzer abgefragt werden.Hinweis: Wenn Sie zum Abgleichen nur Platzhalter verwenden, gibt es N Platzhalter. Dann bedeutet das Übereinstimmungsmuster, dass es größer oder gleich N Zeichen ist. Wenn Sie die genaue Anzahl der Zeichen ausdrücken möchten, lautet das Format wie folgt: ^...$
php-Video Tutorial
Das obige ist der detaillierte Inhalt vonSo führen Sie eine Fuzzy-Abfrage in PHP durch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!