如何在查询字符串中传递">="?

6

我希望能够将一些运算符作为查询字符串参数传递,以便我可以将它们与值一起转换为SQL查询。这个想法是让查询字符串参数决定页面返回的搜索结果是否等于、大于或等于、大于、小于或小于等于价格,如下所示:

=, >=, >, < and <=

我不确定在传递这些操作符时的最佳实践是什么,有人可以帮忙吗?您会通过ASCII代码传递还是仅传递文本,如e,gte,gt,lt,lte,然后在构建查询的结果页面上进行转换?

谢谢大家!


使用LINQ?那会为你完成它。 - Puppy
4个回答

17

@Uwe Keim:既然你在SO上发布了最常引用的漫画,请将其设为CW(社区Wiki)? - gbn
“社区维基”:一个复选框,位于您输入答案的文本框下方。 - gbn
@gbn 完成了!这会给我/文章/答案带来什么好处吗? - Uwe Keim
感谢 @Uwe Keim 的回复!UrlEncode 明显是正确的方法,而且似乎运行良好!我一直在考虑防止 SQL 注入,我想最好的方法是在构建动态 SQL 前确保参数仅等于我的五个运算符之一。 - Sgt Beardy
@Sgt 是的,这也是我会做的方式。也许 LIKE 也是一个有效的运算符。 - Uwe Keim
显示剩余4条评论

5

你能展示一段包含Sgt Beardy想要的查询字符串字符的代码片段吗? - DOK
好的,在重定向之前,我使用Server.UrlEncode(">=")并将其添加到我的查询字符串中,结果在URL中得到了这个...search.aspx?operator=%26gt%3d&value=5我猜我需要在将其转换为SQL查询时对此查询字符串参数使用Server.UrlDecode?然后我需要检查SQL注入,就像Uwe在他的答案中提到的那样。谢谢@Kon! :) - Sgt Beardy
是的,然后您调用Server.UrlDecode来解码参数。我不明白SQL注入与这个问题有什么关系。那是一个完全不同的问题。如果您正在使用(应该使用)参数化存储过程或类似实体模型框架的东西,您就不需要担心SQL注入。 - Kon

2

这是一个非常巧妙,但仍然易于阅读的解决方案。谢谢!非常赞! - Nathan Tregillus

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接