回 帖 发 新 帖 刷新版面

主题:大家看看这个for循环语句中的sql为什么只执行一次

for   i=0   to   2 
rs.open  "update daoyou set num3='1236' where id="&i ,conn,1,3 
response.write   "update daoyou set num3='1236' where id="&i&"<p>" 
next   

sql语句 的意思是让 daoyou表中id从0到2共三个记录的字段num3全部相同


显示语句response.write ,都执行了三次,并且显示没有问题,
可update只执行了当i=0的第一次,为什么啊

回复列表 (共8个回复)

沙发

sql语句有问题
可以用conn.execute(sql)
sql="update ..."   $i什么意思看不懂

板凳

楼上的一样只执行一次

另,sql语句没有问题

3 楼

"update daoyou set num3='"&num3&"' where id="$i
sql中没有这样的写法 $i什么意思

4 楼

[quote]"update daoyou set num3='"&num3&"' where id="$i
sql中没有这样的写法 $i什么意思[/quote]

不好意思,我是在贴本贴时写错的,源码没错,是&

5 楼

那你第一步先确定此数据表有可以操作的记录
第二步 rs.open  "update daoyou set num3='1236' where id="&cstr(i) ,conn,1,3 
这样就没问题了

6 楼

不可能有错的哦~~~~..



完整代码:
<%
dim rs,sql,i
set rs=server.CreateObject("adodb.recordset")
for i=1 to 3
sql="update user set user='修改' where id="&i&""
rs.open sql,conn,1,3
response.Write sql&"<br>"
next
%>

7 楼

我把我实际遇到情况贴出来吧
man的值是由上一级的复选框选过来的,后来发现执行后出来以上情况,怎么也想不通,后来无意中让程序输出的name的值,发出原因是name中含空格,去除就OK,特此贴出来,希望对遇到这类情况的朋友有帮助!

man=split(name,",")
for   i=0   to  ubound(man)
sql="update daoyou set dateS='2007-9-9' where name='"&man(i)&"'" 
conn.execute(sql)
response.write man(i)&"<p>" 
next   


屏显如下:

张三
李四
王五

但数据表实际只执行了当name="张三"这一次

8 楼

1、相同名称表单控件,传递过来的值是用逗号和空格分隔的。
    如果要用split切割,必须用man=split(name,", ")
    不过还有一个简单的方法
    For Each item in Request("name")
      SQL="update daoyou set dateS='2007-9-9' where name='"& item &"'"
    Next

2、最好把所有的SQL语句合并成一句,一次执行,减少数据库链接。

我来回复

您尚未登录,请登录后再回复。点此登录或注册