在 SQL 的 LIKE語句中使用參數
問題陳述:
建立搜尋時函數中,使用參數來防止SQL注入攻擊的查詢是實現:
SELECT * FROM compliance_corner WHERE (body LIKE '%@query%') OR (title LIKE '%@query%')
但是,此查詢不會傳回任何結果。
答案:
參數可以在 LIKE 語句中有效使用以防止SQL注入攻擊。但是,原始查詢中使用的語法不正確。
更正的語法:
在LIKE 語句中使用參數的正確語法是:
SELECT * FROM compliance_corner WHERE (body LIKE @query) OR (title LIKE @query)
在這種情況下,參數定義為“@query”,並且應使用參數化來分配其值查詢。
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語句中的參數來防止SQL注入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!