经典ASP:我如何使用SQL中的值两次?
问题描述:
我对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 />
...
答
它分配给一个变量;不要只从记录集中提取值。
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. 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.
答
首先快速的警告,你是开放的SQL注入你的查询列入nItem域的。只是题外话但一看:)
除此之外,应该有提及在您的记录一栏两次没问题。我猜测你在代码中有不同的问题。如果您发布尝试此页面时得到的行为/错误,它可能会有所帮助。但我认为可能有一些其他代码在上面的代码片段中没有看到,这是导致问题的原因。
一两件事来帮助运行控制测试将取代“选择*”与“选择软件,版本,ID,注册证”等。您可以参照列的数字序号,然后这可能会有帮助。
祝你好运吧。
答
抱歉,无法在实际的答案帮助,但是这看起来像一个SQL注入攻击的最好的例子:
Set nItem = Request.QueryString("ID")
strSQL = "SELECT * "_
& "FROM [Packages] "_
& "WHERE id='" & nItem & "';"
看起来我可能只是更改URL为” ID = 1' ; DROP TABLE学生; - “把东西弄糟。
什么错误,你看见了什么?还是只是第二次默默地失败? – LukeH 2009-02-09 23:38:51
经典ASP?哇。 – 2009-02-09 23:39:38
“软件”值在第二次使用时为空。 – 2009-02-09 23:40:01