Heim > Backend-Entwicklung > PHP-Problem > So führen Sie eine Fuzzy-Abfrage in PHP durch

So führen Sie eine Fuzzy-Abfrage in PHP durch

醉折花枝作酒筹
Freigeben: 2023-03-09 10:40:01
Original
4911 Leute haben es durchsucht

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.

So führen Sie eine Fuzzy-Abfrage in PHP durch

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.

Präzise Abfrage

Das zurückgegebene Ergebnis ist eine und nur eine SQL-Abfrage

Anwendungsszenario: Benutzerregistrierung Login

Fuzzy-Abfrage

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 ein bestimmtes Zeichen enthält

#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

# _o%

Wählen Sie * vom Benutzer aus, wobei Benutzername '_o%'; Zeichen

.

                                                                     ] Jedes Zeichen, das den Klammern in den Klammern entspricht

[ABC] entspricht den Buchstaben A, B oder C.

[A-Z] entspricht einem beliebigen Buchstaben.

[0-9] entspricht einer beliebigen Zahl.

* [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(RLIKENOT RLIKE

Erläuterung: Wie im folgenden Beispiel: Fragen Sie Benutzer ab, deren Benutzername mit dem Zeichen l beginnt. SQL-Übereinstimmungsmuster l%

#Benutzer abfragen, deren Benutzername genau aus 3 Zeichen besteht

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: ^...$

SELECT * FROM user WHERE username REGEXP '^...$';


Empfohlenes Lernen:

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage