注册 登录
编程论坛 ASP技术论坛

菜鸟想高飞

it2008chf 发布于 2008-05-08 15:06, 604 次点击
学习的通路是坎坷的,以下的二个菜鸟问题刚刚解绝,这不,在删除记录的问题上又拌住了.
提示如下:
本人刚学习ASP二星期,还请各位高手多多指教呀.加我QQ77088054 本人天天在线随时接受高手指导.错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] 语法错误 (操作符丢失) 在查询表达式 'bh=' 中。
/sc.asp, 第 21 行

代码如下:
<!--#include file="conn.asp"-->
<%
set rs = Server.CreateObject("ADODB.Recordset")
sql="select * from chf"
rs.open sql,conn,1,3
%>
<%
exec="delete * from chf where bh=" & request.Form("bh")
conn.execute exec 提示这句有错
rs.close
set rs=nothing
conn.close
set conn=nothing
response.write ("成项删除") %>

[[it] 本帖最后由 it2008chf 于 2008-5-8 15:08 编辑 [/it]]
7 回复
#2
bjbaima2008-05-08 15:16
第一,给你一个建议:要学会看错误提示,这里的错误提示非常明显,"语法错误 (操作符丢失) 在查询表达式 'bh=' 中",说明bh没有取到值,或者它的类型不正确;
第二,开发网站一定要罗辑清楚,你的这个"exec="delete * from chf where bh=" & request.Form("bh")conn.execute exec 提示这句有错",为什么要放在rs之中呢?跟rs没有任何关系啊.
以下是解决方案:
专门定义一个变量来接request.Form("bh")的值,要有这个习惯.比如:bh=request.Form("bh");
第二,看一下bh是什么类型的,如果是整形变量,再看看它有没有值;如果是字符串,就得改写sql语句.
如:exec="delete * from chf where bh='" & bh &"'"就是加上单引号;

如果以上没有取得值,你再看这个值从哪里传来的,为什么没有传来值
#3
madpbpl2008-05-08 15:18
exec="delete * from chf where bh=" & request.Form("bh")
在这句前面加一句
Response.Write (Request.Form("bh"))    '检查表单是否把bh的值传过来
#4
it2008chf2008-05-09 13:09
奇怪了,这个网页单独做试的时间它是有错的.但是通过别的网页做连接打开它是没有错.可以顺利的运行,可以把记录删除了.
#5
it2008chf2008-05-09 13:16
哈哈,想能了,明白了,理解了.单独作测试的时,bh里面是空的,因为没有记录的.所以出错.和删除页做了连接后写入了删除数据,所以...哈哈,我真是太聪明了....
#6
heyufu2008-05-09 13:58
#7
letian5842008-05-10 12:59
出现这中情况呢,最好能在最开始判断你要获取的值是否为空或不合法,转到一个错误提示页面,这样有利于网站安全,让别人看不到你的出错信息,
#8
yms1232008-05-10 15:34
楼主是新手,刚开始写这样的代码还是可以理解的。
楼主的代码个人建议加强验证方面的考虑,不知道楼主目前的基础如何,刚学习2个星期可能还考虑不到编码安全方面的考虑,所以还是值得理解。
1