Sql 经典asp.NET中的循环更新语句
我真的需要一些关于这个代码的帮助。当选择了4条记录时,循环仅使update语句运行一次,因此它必须循环4次。这是我第一次遇到这个问题,我似乎不明白为什么它会这样做。请帮忙。多谢各位Sql 经典asp.NET中的循环更新语句,sql,loops,asp-classic,Sql,Loops,Asp Classic,我真的需要一些关于这个代码的帮助。当选择了4条记录时,循环仅使update语句运行一次,因此它必须循环4次。这是我第一次遇到这个问题,我似乎不明白为什么它会这样做。请帮忙。多谢各位 <!--#include file="connectionString.inc"--> <% Dim strmode, arrmode,i,rs,SQLstr, a, b, site_to strmode=Request.form("changeBox") cont1=request.form(
<!--#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
%>
试试这个,看看回答是什么:
<%
Dim strmode, arrmode,i,rs,SQLstr, a, b, site_to
Dim oConn
strmode=Request.form("changeBox")
cont1=request.form("cont1")
arrmode=split(strmode,",")
Response.Write "submitChange is:" & request.form("submitChange") & "<br>"
if request.form("submitChange") = "" then
response.write("Please try again, you have not selected anything. Press back on your browser")
Response.end
end if
set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open conn
if request.form("submitChange") = "site" then
for i = 0 to UBound(arrmode)
SQLstr = "UPDATE SCSer SET Ser_Site_Num = '" & request.form("site_to") & "' WHERE Ser_Num = '" & Trim(arrmode(i)) & "'"
Response.Write "Executing SQL: "& SQLstr &"<br>"
oConn.Execute(SQLstr)
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 convert(int,Ser_Num) BETWEEN " & arrmode(a) & " AND " & arrmode(b) & ""
Response.Write "Executing SQL: "& SQLstr &"<br>"
oConn.Execute(SQLstr)
Response.Write("SUCCESSFULLY UPDATED! <br/>")
response.write(arrmode(a)+"<br/>")
response.write(arrmode(b))
end if
%>
您确定arrmode实际上有多条记录吗?UBound(arrmode)返回什么?顺便说一句,这种代码只是要求进行依赖项注入攻击。ADO支持参数化查询。它们更安全、更快、更易于编写。i UBound(arrmode)返回存储在数组中的记录数。我不知道依赖注入攻击是什么,也不知道如何做ADO位。你能帮我吗?uBond(arrmode)的价值是多少?我打赌是1,而不是你想的。只需做一个响应。编写,或者更好的是,调试应用程序,看看是什么模式contains@PanagiotisKanavos当我选择3条记录时,ubound(arrmode)表示2,因此它是正确的,它循环了3次,但sql语句运行了一次。我稍微更改了代码,而不是直接从连接字符串运行它。我通过ADO运行它。下面是当前代码Ser\u Site\u Num
和Ser\u Num
的数据类型是什么?(您可以编辑您的问题以将代码更新为您现在使用的代码,而不是使用“注释”部分)它是这样说的:submitChange是:site Executing SQL:update SCSer SET Ser_site_Num='sungard03',其中Ser_Num='53852'处理URL时服务器上发生错误。请与系统管理员联系。如果您是系统管理员,请单击此处了解有关此错误的详细信息。如果您更改了代码,我认为conn
是一个连接,我再次尝试了它,下面是输出提交更改是:site Executing SQL:UPDATE SCSer SET Ser_site_Num='sungard03',其中Ser_Num='53852'已成功更新!53852执行SQL:更新SCSer集合Ser_Site_Num='sungard03',其中Ser_Num='53853'已成功更新!53853正在执行SQL:UPDATE SCSer SET Ser_Site_Num='sungard03',其中Ser_Num='53854'已成功更新!53854正在执行SQL:UPDATE SCSer SET Ser_Site_Num='sungard03',其中Ser_Num='53855'已成功更新!53855即使这是输出,其他记录仍显示尚未更新,但只有第一条记录更新。您的所有“Ser_Site_Num”都将更新为“sungard03”;这就是你想要的吗?