我真的需要一些關於此代碼的幫助。當有4個記錄被選中時,循環只會使更新語句運行一次,因此它必須循環4次。這是第一次遇到這個問題,我似乎不明白爲什麼它會這樣做。請幫忙。謝謝。經典asp中的循環更新語句
<!--#include file="connectionString.inc"-->
<%
Dim strmode, arrmode,i,rs,SQLstr, a, b, site_to
strmode=Request.form("changeBox")
cont1=request.form("cont1")
arrmode=split(strmode,",")
if request.form("submitChange") = "" then
response.write("Please try again, you have no selected anything. Press back on your browser")
end if
if request.form("submitChange") = "site" then
response.write(b)
for i = 0 to UBound(arrmode)
SQLstr = "UPDATE SCSer SET Ser_Site_Num = '" & request.form("site_to") & "' WHERE Ser_Num = '" & arrmode(i) & "'"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open SQLstr, conn, 1, 2
Response.Write("SUCCESSFULLY UPDATED! " + arrmode(i))
next
end if
if request.form("submitChange") = "contract" then
a=LBound(arrmode)
b=UBound(arrmode)
SQLstr = "UPDATE SCSer SET Ser_Site_Num = '" & request.form("site_to") & "' WHERE Ser_Num BETWEEN '" & arrmode(a) & "' AND '" & arrmode(b) & "'"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open SQLstr, conn, 1, 2
Response.Write("SUCCESSFULLY UPDATED! <br/>")
response.write(arrmode(a)+"<br/>")
response.write(arrmode(b))
end if
%>
確定實際arrmode有超過1個記錄? UBound(arrmode)返回什麼?順便提一下,這種代碼只是要求進行依賴注入攻擊。 ADO支持參數化查詢。它們更安全,更快速,並且易於編寫 –
Hi UBound(arrmode)返回存儲在數組中的記錄數。我不知道依賴注入攻擊是什麼,我不知道如何做ADO位。你能幫我嗎? – user2456829
UBound(arrmode)的價值是什麼?我敢打賭它是1而不是你的想法。只要做一個Response.Write,或更好的,調試應用程序,看看包含什麼arrmode –