在SQL 中的LIKE 語句中使用參數
開發搜尋功能時,盡量減少SQL 注入攻擊等潛在安全風險至關重要。一種方法是在 SQL 查詢中使用參數。但是,使用者在 LIKE 語句中使用參數時可能會遇到問題。
以下查詢示範了 LIKE 語句中的預期參數用法:
SELECT * FROM compliance_corner WHERE (body LIKE '%@query%') OR (title LIKE '%@query%')
但是,此查詢不會產生任何結果結果。這就提出了一個問題:參數是否適用於此上下文,或者它們是否受到限制,如本例所示?
SELECT * FROM compliance_corner WHERE body LIKE '%<string>%'
此外,使用者提供了在SQL Server 中傳回結果的替代查詢:
SELECT * FROM compliance_corner WHERE (body LIKE '%max%') OR (title LIKE%max%')
要有效地在LIKE 語句中使用參數,建議參考下面的VB.NET程式碼片段:
Dim cmd as New SqlCommand( _ "SELECT * FROM compliance_corner" _ + " WHERE (body LIKE @query )" _ + " OR (title LIKE @query)") cmd.Parameters.Add("@query", "%" +searchString +"%")
以上是SQL 參數能否有效地與 LIKE 語句一起使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!