新微赢技术网

标题: 关于ASP中批量删除问题,拜托各位大哥帮个忙···· [打印本页]

作者: ※随风飘荡※    时间: 2010-1-11 04:57
标题: 关于ASP中批量删除问题,拜托各位大哥帮个忙····
我用如下的删除语句来批量删除从前台传递过来的几个记录,其中,“name”变量是前台传递过来的一组记录,“xibie”变量用于选择数据库中不同的数据表。


<%
id = request.form("name")
xibie=session("id")
<%
idArr = split(id,",")
for i=0 to ubound(idArr)
%>

<%sql = "delete from " & xibie & " where 学号= '" & trim(idArr(i)) &"'"
conn.execute(sql)
next
Response.Redirect("shanchu.asp")
%>
执行这个文件后,出现如下错误:


错误类型:
Microsoft JET Database Engine (0x80040E14)
FROM 子句语法错误。
/myasp/lianxi/shanchu.asp, 第 51 行

其中shanchu.asp的第51行附近内容为:
49 set rs=server.createobject("adodb.recordset")
50 sql="select * from " &xibie
51 rs.open sql,conn,1,3
52 do while not rs.eof

是用于打开一个数据库的表,然后列出所有记录,以用来发送到删除页面的。

每次在本机测试删除时都会出现这样的错误提示,可是点击刷新后会发现记录已经正常删除了。但传到服务器后就出现“内部服务器错误:500···”,这样就没法在服务器上进行正常删除。请问各位这是怎么回事?怎么解决这个问题?
注:“xibie”变量是中文变量。
作者: 怀灭    时间: 2010-1-11 04:57
讲讲一般的调试知识。


/myasp/lianxi/shanchu.asp, 第 51 行

其中shanchu.asp的第51行附近内容为:
49 set rs=server.createobject("adodb.recordset")  
50 sql="select * from " &xibie  
51 rs.open sql,conn,1,3
52 do while not rs.eof

51行出错,问题绝对不会在52行上,所以52行不要看。
具体下来,51行出错,我们注意到51行本身也没什么内容,而报错报的是SQL语句问题,所以问题出在50行上。
50行定义的SQL语句是个最简单的Select语句了,而这里居然会出错,我们要去看看xibie这个变量是不是没取到值,或者取到的不是表名。(还有一种情况,xibie字符串确实包含了表名,但不晓得在哪个步骤比如提交表单上把不可见的字符也给包含进去了)

至于单引号,这里不涉及的。
作者: DJ爱有多痛DJ    时间: 2010-1-11 04:57
刚学
不过我前面置顶里有说过,文本型和时间型的变量都是要加单引的
只有数字型的才可以写成sql="select * from "&xibie


跟这个有关系吗?
作者: ★功夫小子★    时间: 2010-1-11 04:57
回复 2楼 mgmt_asp

里面的确是是中文,但我原来这种也可以正常查询啊···
作者: 冷冷DI草    时间: 2010-1-11 04:57
回复 3楼 aspic

可是这样写了之后系统提示:

错误类型:
Microsoft VBScript 编译器错误 (0x800A0401)
语句未结束
/myasp/lianxi/shanchu.asp, line 54, column 29
sql="select * from '" &xibie "'"
----------------------------^


是不是我哪里输错了呢?
作者: ぱホ    时间: 2010-1-11 04:57
学号是数字型的?还有就是表名、字段名、变量名等不要使用中文,只有在错误提示或正确提示时才能使用中文。
作者: ぃ☆ve銘    时间: 2010-1-11 04:57
确实是变量值问题,因为这个系统的变量值来自session变量,所以当删除操作完成之后,直接进入那个页面,xibie变量取不到正确的值,因此报错了。
作者: 发指的青春    时间: 2010-1-11 04:57
批量删除使用in关键字。。
delete from " & xibie & " where in 学号 ('" & trim(idArr(i)) &"'" )
作者: 随chu风liu    时间: 2010-1-11 04:57
xibie=session("id")
这个的值是中文?
中文就要写成
sql="select * from '"&xibie&"'"
作者: √sdf    时间: 2010-1-11 04:57
使用in关键字




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2