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!