请教一个问题,INSERT INTO 语句的语法错误

zheng_yuqing 2006-08-31 10:36:20
<%@Language=VBScript%>
<%
Dim Nick,Name1,Password,Email
Dim Province,City,Address,Zip,Phon
Nick=Trim(Request.Form("Nick"))
Name=Trim(Request.Form("Name"))
Password=Trim(Request.Form("Password"))
rePass=Trim(Request.Form("rePass"))
Email=Trim(Request.Form("Email"))
Province=Trim(Request.Form("Province"))
City=Trim(Request.Form("City"))
Address=Trim(Request.Form("Address"))
Zip=Trim(Request.Form("Zip"))
Phon=Trim(Request.Form("Phon"))

If Nick="" OR Name="" OR Password="" OR rePass="" OR Email="" OR Phon="" Then
ShowMessage "有必填项目没有填写!"
Set Conn=Nothing
Else
IF Password<>rePass then
ShowMessage "两次输入的密码不一样!"
set conn=nothing
end if
set conn=server.createobject("ADODB.CONNECTION")
P1="Provider=Microsoft.Jet.OLEDB.4.0;"
Path1="Data Source="&Server.MapPath("Users.mdb")
conn.open P1&Path1
set rs=Server.CreateObject("ADODB.Recordset")
sql="Select *From Users Where Nick="&Nick&""
rs.open sql,conn,0,1
if rs.eof and rs.bof then
sql="insert into Users (Nick,Password,Name,Email,Province,City,Address,Zip,Phon)"&"Values('"&Nick&"','"&Password&"','"&Name&"','"&Email&"','"&Province&"','"&City&"','"&Address&"','"&Zip&"','"&Phon&"')"
Conn.execute sql
rs.close
set rs=nothing
set conn=nothing
response.write"<center>祝贺你注册成功!"&"按<a href=Welcome.asp>这里</a>进入欢迎页面</center>"
else
rs.close
set rs=Nothing
set conn=nothing
ShowMessage "此登录名已被注册!"
end if
end if
%>
<!--显示返回重新填写信息的Sub过程:-->
<%Sub ShowMessage(msg)%>
<body bgcolor="#ccffff">
<center>
<h3><%=msg%></h3>
</center>
<form>
<p align="center">
<input type=Button Value="返回重新填写" OnClick="history.back();">
</p>
</form>
</body>
<% Response.End %>
<% End Sub%>

执行这些语句的老是提示出错,是什么原因呢?
谢谢!

出错提示是:Microsoft JET Database Engine 错误 '80040e14'

INSERT INTO 语句的语法错误。

/qing/Checkregi.asp,行 33




...全文
328 14 打赏 收藏 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzr2004 2006-08-31
  • 打赏
  • 举报
回复
你这里的Nick sql="Select *From Users Where Nick="&Nick&""是数字型的吧,插入时将''去掉

sql="insert into Users (Nick,[Password],[Name],Email,Province,City,Address,Zip,Phon)Values("&Nick&",'"&Password&"','"&Name&"','"&Email&"','"&Province&"','"&City&"','"&Address&"','"&Zip&"','"&Phon&"')"
penglewen 2006-08-31
  • 打赏
  • 举报
回复
是类型不匹配你的这些字段是什么类型的,再加不加那个"'"了..
zheng_yuqing 2006-08-31
  • 打赏
  • 举报
回复
rs.open sql,conn,0,1
if rs.eof and rs.bof then
sql="insert into Users (Nick,[Password],[Name],Email,Province,City,Address,Zip,Phon)Values('"&Nick&"','"&Password&"','"&Name&"','"&Email&"','"&Province&"','"&City&"','"&Address&"','"&Zip&"','"&Phon&"')"
'response.write sql
Conn.execute sql
rs.close
set rs=nothing
set conn=nothing

好象还是不行,提示错误是:
Microsoft JET Database Engine 错误 '80040e07'

标准表达式中数据类型不匹配。

/qing/Checkregi.asp,行 30
zheng_yuqing 2006-08-31
  • 打赏
  • 举报
回复
好了,谢谢各位了!
原来是Nick数值型,把''去掉
还有name,password可能为保留字,需要用[]
把values 前 "&"去掉
然后就可以了!
jinjuduo 2006-08-31
  • 打赏
  • 举报
回复
Nick数值型吧,把''去掉
还有name,password可能为保留字,需要用[]
把values 前 "&"去掉

试试

sql="insert into Users (Nick,[Password],[Name],Email,Province,City,Address,Zip,Phon)Values("&Nick&",'"&Password&"','"&Name&"','"&Email&"','"&Province&"','"&City&"','"&Address&"','"&Zip&"','"&Phon&"')"
ziyulin0311 2006-08-31
  • 打赏
  • 举报
回复
sql="insert into Users (Nick,Password,Name,Email,Province,City,Address,Zip,Phon)"&"Values('"&Nick&"','"&Password&"','"&Name&"','"&Email&"','"&Province&"','"&City&"','"&Address&"','"&Zip&"','"&Phon&"')"
改成(就是把values 前 "&"去掉)试试
sql="insert into Users (Nick,Password,Name,Email,Province,City,Address,Zip,Phon)Values('"&Nick&"','"&Password&"','"&Name&"','"&Email&"','"&Province&"','"&City&"','"&Address&"','"&Zip&"','"&Phon&"')"
stou 2006-08-31
  • 打赏
  • 举报
回复
先輸出那語句,到分析器裏調試下再用
zz95469 2006-08-31
  • 打赏
  • 举报
回复
response.write sql 看看sql语句是否正确
zheng_yuqing 2006-08-31
  • 打赏
  • 举报
回复
set conn=server.createobject("ADODB.CONNECTION")
P1="Provider=Microsoft.Jet.OLEDB.4.0;"
Path1="Data Source="&Server.MapPath("Users.mdb")
conn.open P1&Path1
set rs=Server.CreateObject("ADODB.Recordset")
sql="Select *From Users Where Nick="&Nick&" "
rs.open sql,conn,0,1
'rs.open sql,conn,1,3
if rs.eof and rs.bof then
sql="insert into Users (Nick,Password,Name,Email,Province,City,Address,Zip,Phon)Values("&Nick&",'"&Password&"','"&Name&"','"&Email&"','"&Province&"','"&City&"','"&Address&"','"&Zip&"','"&Phon&"')"
'response.write sql
Conn.execute sql
rs.close
set rs=nothing
set conn=nothing

改了,不过还是出现错误:
出现错误是:Microsoft JET Database Engine 错误 '80040e07'

标准表达式中数据类型不匹配。

/qing/Checkregi.asp,行 31
jinjuduo 2006-08-31
  • 打赏
  • 举报
回复
sql="insert into Users (Nick,Password,Name,Email,Province,City,Address,Zip,Phon)Values('"&Nick&"','"&Password&"','"&Name&"','"&Email&"','"&Province&"','"&City&"','"&Address&"','"&Zip&"','"&Phon&"')"
你的nick是数值型,怎么还用' '号呀?
sql="insert into Users (Nick,Password,Name,Email,Province,City,Address,Zip,Phon)Values("&Nick&",'"&Password&"','"&Name&"','"&Email&"','"&Province&"','"&City&"','"&Address&"','"&Zip&"','"&Phon&"')"
zheng_yuqing 2006-08-31
  • 打赏
  • 举报
回复
sql="insert into Users (Nick,Password,Name,Email,Province,City,Address,Zip,Phon)Values('"&Nick&"','"&Password&"','"&Name&"','"&Email&"','"&Province&"','"&City&"','"&Address&"','"&Zip&"','"&Phon&"')"

出现错误是:Microsoft JET Database Engine 错误 '80040e07'

标准表达式中数据类型不匹配。

/qing/Checkregi.asp,行 31

geynee733 2006-08-31
  • 打赏
  • 举报
回复
sql="insert into Users (Nick,[Password],[Name],Email,Province,City,Address,Zip,Phon)Values("&Nick&",'"&Password&"','"&Name&"','"&Email&"','"&Province&"','"&City&"','"&Address&"','"&Zip&"','"&Phon&"')"
zheng_yuqing 2006-08-31
  • 打赏
  • 举报
回复
IF Password<>rePass then
ShowMessage "两次输入的密码不一样!"
set conn=nothing
end if
set conn=server.createobject("ADODB.CONNECTION")
P1="Provider=Microsoft.Jet.OLEDB.4.0;"
Path1="Data Source="&Server.MapPath("Users.mdb")
conn.open P1&Path1
set rs=Server.CreateObject("ADODB.Recordset")
sql="Select *From Users Where Nick="&Nick&" "
'rs.open sql,conn,0,1
rs.open sql,conn,1,3
if rs.eof and rs.bof then
sql="insert into Users (Nick,[Password],[Name],Email,Province,City,Address,Zip,Phon)Values('"&Nick&"','"&Password&"','"&Name&"','"&Email&"','"&Province&"','"&City&"','"&Address&"','"&Zip&"','"&Phon&"')"
'response.write sql
Conn.execute sql
rs.close
set rs=nothing
set conn=nothing

我是用ACCESS数据库的,除了Nick是数字类型之外,全部是文本类型的!
jinjuduo 2006-08-31
  • 打赏
  • 举报
回复
sql="Select *From Users Where Nick="&Nick&""

从这句看出你的nick是数值型的,不然肯定报错的


另外你看看其它的字段类型是不是都是字符型的.如果是的话加上'',不是的话,去掉''
还有看看rs.open sql,conn,0,1这句
改成rs.open sql,conn,1,3
试试

28,402

社区成员

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

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