Heim >Datenbank >MySQL-Tutorial >Wie kann ich Platzhalter sicher mit vorbereiteten Anweisungen in SQL für eine effiziente Suche verwenden?

Wie kann ich Platzhalter sicher mit vorbereiteten Anweisungen in SQL für eine effiziente Suche verwenden?

Linda Hamilton
Linda HamiltonOriginal
2024-12-19 18:52:171036Durchsuche

How Can I Safely Use Wildcards with Prepared Statements in SQL for Efficient Searching?

Verwendung von Platzhaltern in vorbereiteten Anweisungen für Suchfunktionen

Bei der Implementierung einer Suchfunktion mit einem Schlüsselwort als Suchparameter ist es notwendig, diese zu verwenden das Schlüsselwort LIKE in SQL. Die Integration von LIKE in vorbereitete Anweisungen kann jedoch etwas schwierig sein.

Im bereitgestellten Beispiel:

PreparedStatement pstmt = con.prepareStatement(
      "SELECT * FROM analysis WHERE notes like ?");
pstmt.setString(1, notes);

Der Platzhalter (?) in der SQL-Zeichenfolge stellt den Parameter dar, mit dem festgelegt wird das Schlüsselwort LIKE. In diesem Fall sollte das Schlüsselwort% an den dem Platzhalterparameter zugewiesenen Wert angehängt werden.

Lösung:

So verwenden Sie LIKE mit vorbereitet Anweisungen sollte der Platzhalter ('%') direkt im Wert selbst und nicht im SQL-String gesetzt werden. Dies kann durch Anhängen des Platzhalters an den Wert beim Festlegen des Parameters erfolgen:

pstmt.setString(1, notes + "%");

Wenn eine Präfixübereinstimmung erforderlich ist, sollte der Platzhalter am Anfang des Werts platziert werden:

pstmt.setString(1, "%" + notes);

Für eine globale Übereinstimmung sollte der Platzhalter an beiden Enden des Werts platziert werden:

pstmt.setString(1, "%" + notes + "%");

Es ist wichtig zu beachten, dass Sonderzeichen im Wert, B. %, _, [ und !, müssen maskiert werden, um Konflikte mit ihrer Verwendung als Platzhalter in der LIKE-Klausel zu vermeiden. Das in der Antwort bereitgestellte Beispiel geht dieses Problem angemessen an, indem diese Zeichen durch Escape-Sequenzen ersetzt werden, bevor der Parameter festgelegt wird.

Das obige ist der detaillierte Inhalt vonWie kann ich Platzhalter sicher mit vorbereiteten Anweisungen in SQL für eine effiziente Suche verwenden?. 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