怎样解决语法错误 (操作符丢失) 在查询表达式 'userid=' 中

ifRequest.Form("hid")<>""thensql1="selectmax(returntime)asmaxtimefromborrowinfowhereu... if Request.Form("hid")<>"" then

sql1="select max(returntime) as maxtime from borrowinfo where userid="&session("user")&""
set rs1=conn.execute(sql1)
sql2="select title from readerinfo where userid="&session(user)&""
set rs2=conn.execute(sql2)
sql3="select num,term from readerterm where identity='"&rs2("title")&"'"
set rs3=conn.execute(sql3)
sql4="select count(*) from borrowinfo where userid="&session(user)&""
set rs4=conn.execute(sql4)
if rs1("maxtime")<date() then
Response.Redirect "borrow.asp?comm=已借图书超期,不能借书!"
else
if rs4(0)=rs3("num") then
Response.Redirect "borrow.asp?comm=已借满图书,不能再借书!"
else
book_id=request.form("book_id")
present=date()
tpresent=dateadd("d",rs3("term"),present)
sql5="insert into borrowinfo(userid,bookid,bookname,borrowtime,returntime)"
sql5=sql5&"values("&id&","&bookid&",'"&bookname&"','"&present&"','"&tpresent&"')"
conn.execute(sql5)
sql6="update bookinfo set base='否'where bookid='"&session(user)&"'"
Response.Redirect "borrow.asp?comm=此书已借!"
end if
end if

end if%>

浏览器问题:
错误类型:
Microsoft JET Database Engine (0x80040E14)
语法错误 (操作符丢失) 在查询表达式 'userid=' 中。
/tsgl/borrow.asp, 第 108 行

浏览器类型:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

网页:
POST 40 ??? /tsgl/borrow.asp

POST Data:
book_id=32313&hid=ok&Submit=%BD%E8%CA%E9

问题:
1.此代码编写是否正确(是借书时候验证是否超期和已经借满)?
2.浏览器中出现的问题

谢谢!
展开
 我来答
laocui172
2007-03-22 · TA获得超过1754个赞
知道小有建树答主
回答量:1957
采纳率:0%
帮助的人:896万
展开全部
都是sql语句的问题,建议你能理解 & 字符和""
& 表示连接连字符串
如a= "hello"
a= a & "world"
这时a="helloworld"
被一对""包含的是字符串常量,a是字符变量,"hello"、"world"是字符串常量。
你那句
sql2="select title from readerinfo where userid="&session(user)&""
sql2的值是字符串常量"select title from readerinfo where userid="连接session(user)然后再连接""
因此如果你的 表readerinfo 的字段userid为字符型的话,变量应该用""括起来,因为外面有了"",所以要用'',例如sql="select * from readerinfo where userid='0'"
如果你的 表readerinfo 的字段userid为数字的话,就不用""了
例如sql="select * from readerinfo where userid=0"
这里你要查的userid为一个变量session(user)
因此要这么写:
当userid为数值类型的话:sql="select * from readerinfo where " & session(user)。sql的值是由一个字符串常量和一个变量连接成的

当userid为字符类型的话:sql="select * from readerinfo where '" &session(user) & "'"。sql的值是由一个字符串常量和一个变量连接成再加一个字符串连接成的

sql4是同一样的问题

sql5
sql5="insert into borrowinfo(userid,bookid,bookname,borrowtime,returntime)"
sql5=sql5&"values("&id&","&bookid&",'"&bookname&"','"&present&"','"&tpresent&"')"
如果你的id和bookid都是数值型的两边就不要有'了,否则要有'
百度网友1fdeaff
2007-03-22 · TA获得超过263个赞
知道小有建树答主
回答量:507
采纳率:0%
帮助的人:419万
展开全部
你都用的“where userid="&session("user")&"" ”
估计是你的session("user")的值为空,你Response.Write session("user")
看一看,另外,你的userid是什么类型的字段?你上面的语句只能使用数字,不能使用文本的~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
之乐安CF
2007-03-22 · TA获得超过858个赞
知道答主
回答量:279
采纳率:0%
帮助的人:0
展开全部
where userid='"&session("user")&"'"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nnigou
2007-03-22 · TA获得超过983个赞
知道小有建树答主
回答量:1580
采纳率:0%
帮助的人:1531万
展开全部
首先确保session("user")已经取到值并且为数字类型
sql1="select max(returntime) as maxtime from borrowinfo where userid="&session("user")
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友aae2e70cb1f
2020-06-21 · TA获得超过3772个赞
知道大有可为答主
回答量:3124
采纳率:29%
帮助的人:165万
展开全部
sql="select
*
from
job
where
userid='"&companyid&"'
and
durge=1
order
by
[time]
desc"
或者
sql="select
*
from
job
where
userid=1
and
durge=1
order
by
[time]
desc"
试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式