一个贴子的回复不能超过30个,再开一贴,update更新问题??

pdysuny 2006-08-29 04:24:34
我需要做游戏点卡在线支付,自动弹出卡号和密码的.
点击"在线支付"后,通过了银行的扣款,返回反馈页面,买的卡弹出来了,表中字段used值为0为未出售卡,值1为已经出售卡.
问题:我在出售卡后,1赋值给used,但是结果把表中used=0全部更新为1了,而不是我需要卖出去的卡为1,请帮忙看下吧.我需要的是把卖出去的卡used设为1.


如下代码可以出卡,但是库中,未出售的卡都变未出售的了,也就是所有行的used都设为1了.

问题:如何使已经出售的卡的used设为1,而不是全部???

--------penglewen(昨日如梦) 兄,你的方法我试了,依然病态如故,全部设为1了,难道select top...不起作用??

set rs=server.CreateObject("adodb.recordset")
sql="select TOP "&cardcount&" * from card where id="&kaid&" and used=0 order by cardid desc"
rs.open sql,conn,3,3
if rs.eof And rs.bof then
response.write "<script language=javascript>alert('系统缺货!');window.close();</script>"
response.end
else
i=0
ii=""
do while not rs.eof
ii=ii&"卡号:"&rs("cardhao")&"   "
Response.Write "卡号:"&rs("cardhao")&"   "
ii=ii&"密码:"&rs("cardmima")&"<br>"
Response.Write "密码:"&rs("cardmima")&"<br>"

sql="update card set used=1 where cardid="&rs("cardid")&""
conn.execute(sql)
'如果conn.execute不能使用则运行以下指令
'rs("used")=1
'rs("card_dingdanid")=card_dingdanid
'rs.update
i=i+1
rs.movenext
loop


end if
rs.Close
set rs=nothing
response.write sql
...全文
501 35 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
ck1983 2006-09-01
  • 打赏
  • 举报
回复
我也来发一句,我也写过支付宝接口,你应该是忘记了记录每类商品的数量。你在写卡的时候要记得用上那个买家下单的每类商品数量。
penglewen 2006-08-31
  • 打赏
  • 举报
回复
不会吧,这样你的信誉分会很低啊.......................
pdysuny 2006-08-31
  • 打赏
  • 举报
回复
格式没问题啊
pdysuny 2006-08-31
  • 打赏
  • 举报
回复
分还送不了啊
jamesyu123 2006-08-31
  • 打赏
  • 举报
回复
看看格式什么的有没有问题....
pdysuny 2006-08-31
  • 打赏
  • 举报
回复
那个帖结了,还是没解决,这个帖继续,可依然没解决啊,郁闷
pdysuny 2006-08-30
  • 打赏
  • 举报
回复
这样依然不行,还是更新了全部,哎

set rs=server.CreateObject("adodb.recordset")
sql="select top "&cardcount&" * from card where id="&kaid&" and used=0 order by cardid desc"
rs.open sql,conn,3,3

response.write "<script language=javascript>alert('系统缺货!');window.close();</script>"
response.end
else
sql1="update card set used=1 where cardid in (select TOP "&cardcount&" cardid from card where id="&kaid&" and used=0 order by cardid desc)"
conn.execute(sql1)
i=0
ii=""
do while not rs.eof
ii=ii&"卡号:"&rs("cardhao")&"   "
ii=ii&"密码:"&rs("cardmima")&"<br>"

i=i+1
rs.movenext
loop


end if
rs.Close
set rs=nothing
response.write ""&ii&"<br>"
response.write sql1
littlelam 2006-08-30
  • 打赏
  • 举报
回复
set rs=server.CreateObject("adodb.recordset")
sql="select TOP "&cardcount&" * from card where id="&kaid&" and used=0 order by cardid desc"
rs.open sql,conn,3,3
if rs.eof And rs.bof then
response.write "<script language=javascript>alert('系统缺货!');window.close();</script>"
response.end
else
sql="update card set used=1 where cardid in (select TOP "&cardcount&" cardid from card where id="&kaid&" and used=0 order by cardid desc)
conn.execute(sql)
end if
rs.Close
set rs=nothing
littlelam 2006-08-30
  • 打赏
  • 举报
回复
sql="update card set used=1 where cardid in (select TOP "&cardcount&" cardid from card where id="&kaid&" and used=0 order by cardid desc)
penglewen 2006-08-30
  • 打赏
  • 举报
回复
按照这位littlelam(竹子岌)(http://www.toaspx.com)
你把所有的SQL=SQl&"update card set used=1 where cardid="&rs("cardid")&""
等循环结束再执行的.这样应该不会改变do while 的条件了吧.
pdysuny 2006-08-30
  • 打赏
  • 举报
回复
littlelam(竹子岌)(http://www.toaspx.com):
给个开头吧
littlelam 2006-08-30
  • 打赏
  • 举报
回复
sql="select TOP "&cardcount&" * from card where id="&kaid&" and used=0 order by cardid desc"
sql="update card set used=1 where cardid="&rs("cardid")&""

当update的时候记录集改变了。。。do while 就会出错了。。。
你应该换一种方式写。。。
pdysuny 2006-08-30
  • 打赏
  • 举报
回复
response.write ""&ii&"<br>"
response.write ""&i&"<br>"
response.write ""&cardcount&"<br>"
response.write sql

执行后:
卡号:22 密码:22

1
1
update ty_card set used=1 where cardid=296

晕了,这里看只更新一个记录,但执行一次后,used都全部更新为1了?
chinastorm 2006-08-30
  • 打赏
  • 举报
回复
看似没错
pdysuny 2006-08-30
  • 打赏
  • 举报
回复
重新说明一下:
sql="select TOP "&cardcount&" * from card where id="&kaid&" and used=0 order by cardid desc"
中id为获得的产品编号,这里不可没有,cardid为card表中自动编号,used为判断项:0为未使用,1为已经使用。

cjl8882000(狂奔的蜗牛):
你的说法一一试过,无论我把update语句放在循环上面还是下面(不在循环内),无论我去掉循环do while 还是把计数i都去掉,都不能改变表中used全部更新为1的结果,超级郁闷中!!

之前的帖子已经发出100分求教,依然无法解决!请教了啊!!
li_net 2006-08-30
  • 打赏
  • 举报
回复
try

conn.execute("update card set used=1 where cardid="&rs("cardid")
penglewen 2006-08-30
  • 打赏
  • 举报
回复
那应该没错啊,满足这个条件的cardid=293 只有一条记录吧............
csecong 2006-08-30
  • 打赏
  • 举报
回复
sql="select TOP "&cardcount&" * from card where id="&kaid&" and used=0 order by cardid desc"

kaid代表什么意思啊?如果代表卡号的话难道有相同的卡么
如果代表卡类别就通顺了~

无法order by 的可能是cardid相同

你的代码应该没出什么问题吧,难道是有地方写错了,比如字段名?cardid
ATHENA112 2006-08-30
  • 打赏
  • 举报
回复
明显的逻辑问题,我估计你的表里面自动编号字段是cardid,而你习惯性地写id="&kaid&" ,因为后面是cardid排序。

sql="select TOP "&cardcount&" * from card where id="&kaid&" and used=0 order by cardid desc"
改为
sql="select TOP "&cardcount&" * from card where used=0 order by cardid desc"
即可。
li_net 2006-08-30
  • 打赏
  • 举报
回复
偶也支持 cjl8882000(狂奔的蜗牛)
加载更多回复(15)

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧