Heim >Datenbank >MySQL-Tutorial >Wie können vorbereitete Aussagen die Effizienz und Sicherheit von LIKE-Suchen verbessern?
LIKE
Suchen mit vorbereiteten AussagenDatenbankabfragen, 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:
$yourParam
).?
Platzhalter.bind_param()
.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!