我正在编写一个搜索函数,并考虑使用参数来防止或至少限制 SQL 注入(inject)攻击。但是,当我通过我的程序运行它时,它不会返回任何内容:
SELECT * FROM compliance_corner WHERE (body LIKE '%@query%') OR (title LIKE '%@query%')
参数可以这样使用吗?或者它们仅在以下情况下有效,例如:
SELECT * FROM compliance_corner WHERE body LIKE '%<string>%'(其中 <string> 是搜索对象)。

编辑:我正在用 VB.NET 构建这个函数,这对你们贡献的语法有影响吗?

此外,我在 SQL Server 中运行了此语句:SELECT * FROM compliance_corner WHERE (body LIKE '%max%') OR (title LIKE %max%')` 并返回结果。

最佳答案

您的可视化基本代码如下所示:

Dim cmd as New SqlCommand("SELECT * FROM compliance_corner WHERE (body LIKE '%' + @query + '%') OR (title LIKE '%' + @query + '%')")

cmd.Parameters.Add("@query", searchString)

关于asp.net - 如何?参数和 LIKE 语句 SQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/251276/

10-16 14:16