我正在编写一个搜索函数,并且已经想出了使用参数来防止或至少限制SQL注入攻击的查询。然而,当我在我的程序中运行它时,它没有返回任何东西:
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%')`,它返回结果。
发布于 2008-10-30 18:54:18
您的visual basic代码将如下所示:
Dim cmd as New SqlCommand("SELECT * FROM compliance_corner WHERE (body LIKE '%' + @query + '%') OR (title LIKE '%' + @query + '%')")
cmd.Parameters.Add("@query", searchString)
发布于 2008-10-30 19:15:33
好吧,我会这么说:
Dim cmd as New SqlCommand(
"SELECT * FROM compliance_corner"_
+ " WHERE (body LIKE @query )"_
+ " OR (title LIKE @query)")
cmd.Parameters.Add("@query", "%" +searchString +"%")
发布于 2008-10-30 18:46:20
你需要做的是:
LIKE '%' + @param + '%'
https://stackoverflow.com/questions/251276
复制相似问题