2009-02-09 43 views
2

我对web dev非常新鲜,但我正在用简单的软件目录和经典的ASP组合起来。一切似乎都很好,除了我想在页面上使用两次SQL数据库中的值。例如,在网页标题以及在页面的主体,但是我只能似乎一次使用的每个值:经典ASP:我如何使用SQL中的值两次?

.... 
Set nItem = Request.QueryString("ID") 

strSQL = "SELECT * "_ 
    & "FROM [Packages] "_ 
    & "WHERE id='" & nItem & "';" 

Set rstSearch = cnnSearch.Execute(strSQL) 

<title><%=rstSearch.Fields("Software") %></title> 
<body> 
<center>Software Information</center> 
<%=rstSearch.Fields("Software")%> <br /> 
<%=rstSearch.Fields("Version")%> <br /> 
<%=rstSearch.Fields("ID")%> <br /> 
<%=rstSearch.Fields("Licence")%> <br /> 
... 
+0

什么错误,你看见了什么?还是只是第二次默默地失败? – LukeH 2009-02-09 23:38:51

+0

经典ASP?哇。 – 2009-02-09 23:39:38

+0

“软件”值在第二次使用时为空。 – 2009-02-09 23:40:01

回答

5

它分配给一个变量;不要只从记录集中提取值。

Set nItem = Request.QueryString("ID") 

strSQL = "SELECT * "_ 
    & "FROM [Packages] "_ 
    & "WHERE id='" & nItem & "';" 

Set rstSearch = cnnSearch.Execute(strSQL) 

Dim software 
software = rstSearch("Software") 
' set your other fields as variables... 

<title><%= software %></title> 
<body> 
<center>Software Information</center> 
<%= software %> <br /> 

应该适合您。

1

您可能需要只值提取到一个局部变量,并用它两次。很久很久以前,我曾经见过这种奇怪的东西。

1

一些评论:

1. Possibly call rstSearch.MoveFirst before the second 
    rstSearch.Fields("Software") 
2. If that doesn't work write <%=Err.Description%> right after the 
    second rstSearch.Fields("Software") line. 
3. Try not to ever use Select * for selecting columns. 
    Always specify which columns you want. 
4. Please try and use ASP.Net. It's much better then ASP3. 
3

首先快速的警告,你是开放的SQL注入你的查询列入nItem域的。只是题外话但一看:)

除此之外,应该有提及在您的记录一栏两次没问题。我猜测你在代码中有不同的问题。如果您发布尝试此页面时得到的行为/错误,它可能会有所帮助。但我认为可能有一些其他代码在上面的代码片段中没有看到,这是导致问题的原因。

一两件事来帮助运行控制测试将取代“选择*”与“选择软件,版本,ID,注册证”等。您可以参照列的数字序号,然后这可能会有帮助。

祝你好运吧。

0

抱歉,无法在实际的答案帮助,但是这看起来像一个SQL注入攻击的最好的例子:

Set nItem = Request.QueryString("ID") 

strSQL = "SELECT * "_ 
    & "FROM [Packages] "_ 
    & "WHERE id='" & nItem & "';" 

看起来我可能只是更改URL为” ID = 1' ; DROP TABLE学生; - “把东西弄糟。