Heim >Datenbank >MySQL-Tutorial >Wie können vorbereitete Aussagen die Effizienz und Sicherheit von LIKE-Suchen verbessern?

Wie können vorbereitete Aussagen die Effizienz und Sicherheit von LIKE-Suchen verbessern?

Susan Sarandon
Susan SarandonOriginal
2025-01-16 10:57:58282Durchsuche

How Can Prepared Statements Improve the Efficiency and Security of LIKE Searches?

Optimierung von LIKESuchen mit vorbereiteten Aussagen

Datenbankabfragen, die den Operator LIKE für den Mustervergleich verwenden, erfordern eine sorgfältige Handhabung, um Schwachstellen zu vermeiden und die Leistung sicherzustellen. Eine unsachgemäße Verwendung kann zu Fehlern führen.

Lassen Sie uns einige fehlerhafte Ansätze untersuchen:

<code class="language-sql">$sql = 'SELECT * FROM `users` WHERE username LIKE \'%{?}%\' ';</code>

Dies schlägt fehl, weil die Anzahl der Variablen in der SQL-Zeichenfolge nicht mit den für bind_param() bereitgestellten Parametern übereinstimmt.

<code class="language-sql">$sql = 'SELECT * FROM `users` WHERE username LIKE %{?}% ';</code>

Dies führt zu einem Syntaxfehler aufgrund der falschen Platzierung von Platzhalterzeichen (%{}) innerhalb der Abfragezeichenfolge.

Die richtige Methode verwendet vorbereitete Anweisungen, verwendet einen Fragezeichen-Platzhalter und bindet die Variable entsprechend:

<code class="language-php">$likeVar = "%" . $yourParam . "%";
$stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ?");
$stmt->bind_param("s", $likeVar);
$stmt->execute();</code>

Dieser Code:

  1. Erstellt das Muster durch Verketten von Prozentzeichen mit der Benutzereingabe ($yourParam).
  2. Bereitet die Abfrage mit einem ? Platzhalter.
  3. Bindet die Musterzeichenfolge („s“ für Zeichenfolge) mit bind_param().
  4. Führt die vorbereitete Anweisung aus.

Die Verwendung vorbereiteter Anweisungen mit LIKE verhindert SQL-Injection und verbessert die Abfrageeffizienz.

Das obige ist der detaillierte Inhalt vonWie können vorbereitete Aussagen die Effizienz und Sicherheit von LIKE-Suchen verbessern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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