标题:求教. sql 批量修改数据不成功
只看楼主
zhongyan43
Rank: 1
等 级:新手上路
帖 子:7
专家分:3
注 册:2010-12-8
结帖率:50%
已结贴  问题点数:20 回复次数:8 
求教. sql 批量修改数据不成功
以下代码可以运行,但批量修改数据不成功,不知错误在哪里

<!--#include file=include.asp-->
<%
Response.Buffer = True
Response.Expires = -1
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"

set rss=server.CreateObject("adodb.recordset")
sqls="select * from web_childorders Where Shopid='"&request.cookies("kkshopid")&"'"
rss.open sqls,conn,1,3
%>

<form name="orderChange" method="post" action="?act=update">
<table border="1" width="100%" id="table1">

<tr> <td>
<input type="submit" name="Submit3" value="Submit" onClick="return confirm('Confirm ?');">
</td></tr>
<tr> <td>Item Number</td> </tr>

<%
do while not rss.eof
    if rss("C_state")>0 then
%>
<tr><td><input type=checkbox name="ck" value=<%=rss("orderid")%>> <%=rss("orderid")%> </td></tr>
<%
    End if
    rss.movenext
loop
%>
</table>
</form>

<%
if request("act")="update" and request("ck")<>"" then

    ''第一种方法,改不了任何数据
     ''conn.execute("update web_childorders set C_state=6 where orderid in ('"&request("ck")&"')")

''第二种方法,只改第一个数据
pid=request("ck")
mystr=split(pid,",")
for i=0 to ubound(mystr)
exec="update web_childorders set C_state=6 where orderid ='"&mystr(i)&"'"
conn.execute(exec)
next
    response.write("Records has been updated")
end if

set rss=nothing
conn.close
set conn = Nothing
%>

搜索更多相关主题的帖子: sql 批量 数据 
2010-12-08 21:18
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
得分:5 
conn.execute("update web_childorders set C_state=6 where orderid in ('"&request("ck")&"')")
更新数据必须确定性指名数据是哪条用=号,而你这个SQL用的确是非确定性的in.

Q:1428196631,百度:开发地 即可找到我,有事请留言!
2010-12-09 00:05
hams
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:18
帖 子:912
专家分:3670
注 册:2008-7-30
得分:5 
第二条,如果只更新了一条记录,先检查一下你的数据有效性

俺不高手,俺也是来学习的。
俺的意见不一定就对,当你不认同时请点忽视按钮。
当走到十字路口不知该如何走时,可在论坛问下路,但你若希望别人能一路把你送到目的地,显然是不现实的,因为别人也有自己要走的路。
2010-12-09 08:07
zhongyan43
Rank: 1
等 级:新手上路
帖 子:7
专家分:3
注 册:2010-12-8
得分:0 
数据库表名: web_childdorders

数据库结构:

orderid        Shopid        C_state
123        abc        1
456        abc        1
789        def        1

数据都有效,但只能更新第一条记录
2010-12-09 16:21
hams
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:18
帖 子:912
专家分:3670
注 册:2008-7-30
得分:0 
我是说这个
for i=0 to ubound(mystr)
和这个:
where orderid ='"&mystr(i)&"'"


俺不高手,俺也是来学习的。
俺的意见不一定就对,当你不认同时请点忽视按钮。
当走到十字路口不知该如何走时,可在论坛问下路,但你若希望别人能一路把你送到目的地,显然是不现实的,因为别人也有自己要走的路。
2010-12-09 17:32
wangjy500
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:13
帖 子:457
专家分:2569
注 册:2010-7-11
得分:5 
''conn.execute("update web_childorders set C_state=6 where orderid in ('"&request("ck")&"')")
我觉得不要用引号试试!
''conn.execute("update web_childorders set C_state=6 where orderid in ("&request("ck")&")")





[ 本帖最后由 wangjy500 于 2010-12-9 18:59 编辑 ]

QQ:63572063
2010-12-09 18:04
zhongyan43
Rank: 1
等 级:新手上路
帖 子:7
专家分:3
注 册:2010-12-8
得分:0 
不用引号会出现

An error occurred on the server when processing the URL. Please contact the system administrator.

If you are the system administrator please click here to find out more about this error.
2010-12-09 19:14
zhongyan43
Rank: 1
等 级:新手上路
帖 子:7
专家分:3
注 册:2010-12-8
得分:0 
用response.write 会显示正确的记录,数据都是有效的

''第二种方法,只能改第一个数据
pid=request("ck")
mystr=split(pid,",")
for i=0 to ubound(mystr)
exec="update web_childorders set C_state=6 where orderid ='"&mystr(i)&"'"
conn.execute(exec)

''用response.write 会显示正确的记录
response.write (mystr(i)&"<br>")

next
2010-12-09 19:16
zhongyan43
Rank: 1
等 级:新手上路
帖 子:7
专家分:3
注 册:2010-12-8
得分:0 
sql 语句 "update web_childorders set C_state=6 where orderid in ('1011042253179022','10112810593074851')"
成功批量修改数据库

不知道是不是
<tr><td><input type=checkbox name="ck" value=<%=rss("orderid")%>> <%=rss("orderid")%> </td></tr>
取的是数字,而数据库里的是字符而出现问题?
2010-12-09 21:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-328418-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.986496 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved