如何在 SQL 中使用參數和 LIKE 語句
在 SQL 中,LIKE 語句可讓您在字串中執行模式比對。然而,如果不採取適當的預防措施,使用它可能會導致 SQL 注入攻擊。為了防止此類攻擊,可以採用參數化查詢。
原始問題
為了限制SQL 注入漏洞,使用參數建構了以下查詢:
SELECT * FROM compliance_corner WHERE (body LIKE '%@query%') OR (title LIKE '%@query%')
但是,在程式中執行此查詢不會產生任何結果。參數可以這樣使用嗎,還是只適用於以下情況:
SELECT * FROM compliance_corner WHERE body LIKE '%<string>%'
解
參數可以如預期在 LIKE 語句中使用。原始查詢中的語法不正確。以下是在此場景中使用參數的正確方法:
Dim cmd As New SqlCommand( "SELECT * FROM compliance_corner" _ + " WHERE (body LIKE @query )" _ + " OR (title LIKE @query)") cmd.Parameters.Add("@query", "%" & searchString & "%")
此查詢將正確匹配正文或標題欄位中包含搜尋字串的字串。
VB。 NET 注意事項
提供的解決方案對於 VB.NET 在語法上是正確的。但是,實際實作可能會有所不同,具體取決於所使用的特定資料庫提供程序和連接方法。請參閱相應的文件以獲取進一步的指導。
以上是SQL中的LIKE語句可以使用參數進行模式比對嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!