Heim >Datenbank >MySQL-Tutorial >Wie verwende ich vorbereitete Anweisungen sicher mit LIKE-Abfragen in PHP?

Wie verwende ich vorbereitete Anweisungen sicher mit LIKE-Abfragen in PHP?

Linda Hamilton
Linda HamiltonOriginal
2025-01-16 11:07:57554Durchsuche

How to Safely Use Prepared Statements with LIKE Queries 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!

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