2009-02-09 56 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學生; - 「把東西弄糟。