经典ASP:在请求的名称或序号对应的集合中找不到项目

时间:2012-10-04 19:25:16

标签: sql asp-classic

在我正在处理的经典ASP网站中,我需要获取当前网站所有者的ID,以便将Excel中的电子邮件列表导出到该用户。我在SQL行上遇到了主题中提到的错误。我无论如何都无法获得身份证。当我输入一个与数据库中的ID相对应的数字时,数据被拉得很好。我不知道在WHERE ID =完成这项工作后要放什么

<%
Set rs = Server.CreateObject("ADODB.RecordSet")
SQL = "SELECT ID, storeNumber, siteOwner FROM OrderOwners WHERE ID = " & rs("ID")
rs.Open SQL, conn, AdOpenStatic, AdLockPessimistic
If NOT rs.EOF then
    %>
        <textbox value="<% = rs("ID") %>"><% = rs("storeNumber") & " - " & rs("siteOwner") %></textbox>
    <%
End If
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
%>

我不确定该怎么做,因为我通常不会在经典的asp中工作,这个网站很久很久以前都写过了。

当我在SQL Server中使用该SQL语句并将rs(“ID”)替换为“1”时,该语句运行正常。有谁可以帮助我吗?我找不到任何似乎有帮助的东西。

更新SQL TO

    SQL = "SELECT ID, storeNumber, siteOwner FROM OrderOwners WHERE ID = ?

但现在我有错误

[Microsoft][ODBC SQL Server Driver]COUNT field incorrect or syntax error

在第19行

rs.Open SQL, conn, AdOpenStatic, AdLockPessimistic

1 个答案:

答案 0 :(得分:5)

这些行不起作用:

Set rs = Server.CreateObject("ADODB.RecordSet") 
SQL = "SELECT ID, storeNumber, siteOwner FROM OrderOwners WHERE ID = " & rs("ID") 

这些行失败了,因为您刚刚通过在其上方的行中设置rs("ID")来清除rs

您需要将尝试检索信息的ID传递给SQL查询。如果这是一个公共站点,请小心,就像您通过查询字符串传递ID一样,您可能容易受到SQL注入攻击。