【问题标题】:ASP Compare server variable with DB recordsetASP 将服务器变量与 DB 记录集进行比较
【发布时间】:2018-01-23 17:10:57
【问题描述】:

我是这种旧脚本语言的新手,但我们现在只有这些。我正在尝试使此代码正常工作。

我想将 USERID 服务器变量与记录集中的相同 USERID 进行比较,如果为真,它将重定向该 USERID 的名称。

<%

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=I:\storyData.mdb" 

set rs = Server.CreateObject("ADODB.Recordset")

rs.Open "SELECT USERIDFROM preprod", conn

strName = "John"
strNo = "This is not you"

If Request.ServerVariables("HTTP_USERID") = (rs.Fields.Item("USERID").Value) Then

Response.Redirect("story.html?" & "name=" & strName)

Else

Response.Redirect("story.html?" & "name=" & strNo)

End If

%>

我希望这有任何意义。这看起来很简单,但无法让它发挥作用。

谢谢

【问题讨论】:

    标签: asp-classic recordset request.servervariables


    【解决方案1】:

    什么“不起作用”?

    查看您的代码,您似乎只检查了查询的第一条记录。我想你想做这样的事情:

    <%
    
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=I:\storyData.mdb" 
    
    set rs = Server.CreateObject("ADODB.Recordset")
    
    rs.Open "SELECT count( USERID ) FROM preprod where userID = " & Request.ServerVariables("HTTP_USERID"), conn
    
    strName = "John"
    strNo = "This is not you"
    
    if CInt( rs( 0 ) ) > 0 then
    
        Response.Redirect("story.html?" & "name=" & strName)
    Else
    
        Response.Redirect("story.html?" & "name=" & strNo)
    
    End If
    
    %>
    

    此代码对您表中的用户 ID 进行计数,如果超过 1 个,它将正确执行重定向。这种方式效率更高。

    【讨论】:

    • @Mark 似乎是一个足够合理的答案。我会说直接注入标头而不是使用参数化查询充满了问题,所以可能就是这样。
    • @Lankymart - 是的,但这超出了问题的范围。
    • @JoshMontgomery 这很奇怪,甚至没有注意到有问题。至于范围,任何与 db 层交互并从外部源 (查询字符串、表单帖子、标题等) 获取值的 asp 代码都应该使用 ADODB.Command 对象进行参数化,这大约是就像你可以在这篇文章中获得的“范围”一样。
    • 不需要使用COUNT()函数,浪费资源。只需执行Select * From ... 然后检查 EOF。如果为真则表示没有该记录,否则表示该记录存在。
    • @ShadowWizard - 我不同意。如果该表中有数百万用户怎么办?我认为使用在其存在期间反复优化的 sql 函数比大约 20 年未更新的代码更有效?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 2016-03-26
    • 2021-12-17
    • 2022-01-15
    • 2019-01-21
    相关资源
    最近更新 更多