用asp split得到的数组作为sql条件中in的取值范围,出现错误
<!--#includefile="conn.asp"--><%voteadd=Split(request.form("voteadd"),",")setrs=serve...
<!--#include file="conn.asp"-->
<%
voteadd=Split(request.form("voteadd"),",")
set rs=server.CreateObject("adodb.recordset")
sql="SELECT count(distinct(college)) as cd FROM voter where id in "&voteadd&""
rs.Open sql,conn,3,3
if(rs("cd"))=1 then
response.write "选择的人所在学校都是一样的!"
end if
rs.close
set rs=nothing
%>
我用WIN7+IIS6 页面空白什么提示都没有,但是有时候提示类型不匹配,如何解决这个问题? 展开
<%
voteadd=Split(request.form("voteadd"),",")
set rs=server.CreateObject("adodb.recordset")
sql="SELECT count(distinct(college)) as cd FROM voter where id in "&voteadd&""
rs.Open sql,conn,3,3
if(rs("cd"))=1 then
response.write "选择的人所在学校都是一样的!"
end if
rs.close
set rs=nothing
%>
我用WIN7+IIS6 页面空白什么提示都没有,但是有时候提示类型不匹配,如何解决这个问题? 展开
1个回答
展开全部
voteadd=Split(request.form("voteadd"),",")
改为
voteadd=request.form("voteadd")
sql="SELECT count(distinct(college)) as cd FROM voter where id in "&voteadd&""
改为
sql="SELECT count(distinct(college)) as cd FROM voter where id in (" & voteadd & ")"
补充说明: in后面的数据结构就是类似(1, 2, 3, 4)这样的字串,你用Split分解为数组反而是画蛇添足!
改为
voteadd=request.form("voteadd")
sql="SELECT count(distinct(college)) as cd FROM voter where id in "&voteadd&""
改为
sql="SELECT count(distinct(college)) as cd FROM voter where id in (" & voteadd & ")"
补充说明: in后面的数据结构就是类似(1, 2, 3, 4)这样的字串,你用Split分解为数组反而是画蛇添足!
追问
这个确实是我没仔细研究,按照您的指点我修改了之后,提示
ADODB.Recordset 错误 '800a0bb9'
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
/test.asp,行 7
应该是id与voteadd 数据类型不匹配,数据库sql2000里我用numeric自增,voteadd是字符串,这个您处理过吗?
追答
request.form("voteadd")的值本身就是 2, 6, 4, 5, 3 这样的字符串,所以直接把它放到 in () 的括号中就行了。你用split把它分解为数组再放到()中肯定提示类型不匹配啦。你在评论中所说的方法虽然奏效,但它实际上是把数组重新组合为 2, 6, 4, 5, 3 这样的字符串,所以仍然是脱裤子放屁——多搞!我干脆给你完整的代码吧:
另外,你评论中所说的方法虽然是多搞,但也确实是有效的,不过完全可以简化一下,用join函数就可以把数组重新组合为字符串了:
补充一句:join函数是split函数的逆运算,所以我才会说这是多搞啊,因为一来一去又重新到回起点了!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询