在準備語句中使用「like」通配符
準備語句透過防止SQL 注入攻擊和增強效能,提供了執行SQL 查詢的有效方法。但是,將“like”通配符與準備好的語句整合可能有點棘手。
考慮以下查詢,該查詢根據關鍵字在「analysis」表中搜尋行:
PreparedStatement pstmt = con.prepareStatement( "SELECT * FROM analysis WHERE notes like ?"); pstmt.setString(1, notes); ResultSet rs = pstmt.executeQuery();
要在此查詢中使用「like」通配符,您需要將其包含在綁定到準備好的語句參數的值。僅僅在 pstmt.setString(1, Notes) 中加入「keyword%」是不夠的。
相反,您可以根據需要實現前綴、後綴或全域匹配:
notes = notes .replace("!", "!!") .replace("%", "!%") .replace("_", "!_") .replace("[", "!["); PreparedStatement pstmt = con.prepareStatement( "SELECT * FROM analysis WHERE notes LIKE ? ESCAPE '!'"); pstmt.setString(1, notes + "%");
pstmt.setString(1, "%" + notes);
pstmt.setString(1, "%" + notes + "%");
請記住使用正斜線() 對“notes”字串中的特殊字元進行轉義,以防止它們幹擾“ like”通配符搜尋。
以上是如何在準備好的語句中有效使用「like」通配符?的詳細內容。更多資訊請關注PHP中文網其他相關文章!