Heim >Datenbank >MySQL-Tutorial >Wie verwende ich vorbereitete Anweisungen sicher mit LIKE-Abfragen in PHP?
Vorbereitete Aussagen und LIKE-Abfragen verstehen
Wenn in PHP vorbereitete Anweisungen für LIKE-Abfragen verwendet werden, müssen Zeichenfolgenparameter sorgfältig behandelt werden, um mögliche Fehler zu vermeiden. Vorbereitete Anweisungen verwenden Platzhalter (?), um SQL-Injection zu verhindern und gleichzeitig die Leistung zu verbessern.
Fall 1: Verwenden Sie „%{$var}%“, um den Benutzernamen abzugleichen
Der folgende Code:
<code class="language-php">$sql = 'SELECT * FROM `users` WHERE username LIKE \'%{?}%\' ';</code>
löst einen Fehler aus, weil der Platzhalter ? in der vorbereiteten SQL-Anweisung nicht richtig definiert ist.
Fall 2: Verwenden Sie %{?}%, um den Benutzernamen abzugleichen
Der folgende Code:
<code class="language-php">$sql = 'SELECT * FROM `users` WHERE username LIKE %{?}% ';</code>
schlägt ebenfalls fehl, da die Syntax ungültig ist. Das Prozentzeichen (%) kann in vorbereiteten Anweisungen nicht direkt als Platzhalter verwendet werden.
Lösung: Verwenden Sie eine verkettete LIKE-Variable
Um dieses Problem zu beheben, verwenden Sie die verkettete LIKE-Variable:
<code class="language-php">$likeVar = "%" . $yourParam . "%"; $stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ?"); $stmt->bind_param("s", $likeVar); $stmt->execute();</code>
In diesem Beispiel wird $likeVar durch die Kombination eines Prozentzeichens mit der Benutzereingabe $yourParam erstellt. Die LIKE-Bedingung verwendet dann den Platzhalter ?, der während der Parameterbindung an die verkettete Zeichenfolge $likeVar gebunden wird.
Dieser Ansatz stellt sicher, dass das Prozentzeichen in der vorbereiteten Anweisung als Literalzeichen und nicht als Syntaxelement behandelt wird. Es ermöglicht auch Suchvorgänge ohne Berücksichtigung der Groß- und Kleinschreibung, indem sichergestellt wird, dass $likeVar die richtigen Platzhalterzeichen enthält.
Das obige ist der detaillierte Inhalt vonWie verwende ich vorbereitete Anweisungen sicher mit LIKE-Abfragen in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!