0

我正在尝试在 ASPX 文件中使用 sql 命令来捕获 querysring 值,但存在一些语法问题。一切正常,但是当我尝试通过查询字符串过滤它时,我得到了语法问题。如何使用查询字符串过滤我的查询?这是我的代码:

<asp:SqlDataSource ID="DD_AI_DS" runat="server" 
              ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" 
              SelectCommand="SELECT DISTINCT [MyField] FROM [MyTable] where ID = '"+request.querystring[ID]+"' order by ID asc" >
          </asp:SqlDataSource>
4

2 回答 2

4

试试这个:

<asp:SqlDataSource ID="DD_AI_DS" runat="server" 
   ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" 
   SelectCommand="SELECT DISTINCT [MyField] FROM [MyTable] where ID = @ID order by ID asc" >
   <SelectParameters>
    <asp:QueryStringParameter Name="ID" QueryStringField="Post_ID" Type="String" />
   </SelectParameters>
</asp:SqlDataSource>

顺便说一句,如果您编写的代码确实有效,那么它会通过允许 sql 注入在您的网站中创建一个安全漏洞。我会阅读这个主题,这样你就不会意外地让你的网站对黑客开放。

于 2013-08-12T21:01:41.317 回答
0

您还可以SqlDataSource在代码隐藏中设置属性,如下所示:

DD_AI_DS.SelectCommand = "SELECT DISTINCT [MyField] FROM [MyTable] where ID = '"+ Request.QueryString[ID] + "' order by ID asc";
DD_AI_DS.Select(DataSourceSelectArguments.Empty);

注意:这使您可以在 Visual Studio 中支持 IntelliSense,并在编译时捕获一些问题。

于 2013-08-12T21:01:27.573 回答