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
Freigeben: 2025-01-16 11:07:57
Original
587 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage