网站首页  |  业界新闻  |  技术文章  |  视频教程  |  下载频道  |  程序源码  |  个人空间  |  编程论坛
 
学习型 ASP/PHP/ASP.NET 主机 30元/年 全能 ASP/PHP/ASP.NET 主机,支持月付 专业 MSSQL 数据库空间,支持月付 专业 MySQL 数据库空间,支持月付
发新话题
打印

菜鸟想高飞

菜鸟想高飞

学习的通路是坎坷的,以下的二个菜鸟问题刚刚解绝,这不,在删除记录的问题上又拌住了.
提示如下:
本人刚学习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 ("成项删除") %>

[ 本帖最后由 it2008chf 于 2008-5-8 15:08 编辑 ]

TOP

第一,给你一个建议:要学会看错误提示,这里的错误提示非常明显,"语法错误 (操作符丢失) 在查询表达式 '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 &"'"就是加上单引号;

如果以上没有取得值,你再看这个值从哪里传来的,为什么没有传来值
白马网络www.bjbaima.cn

TOP

exec="delete * from chf where bh=" & request.Form("bh")
在这句前面加一句
Response.Write (Request.Form("bh"))    '检查表单是否把bh的值传过来

TOP

奇怪了,这个网页单独做试的时间它是有错的.但是通过别的网页做连接打开它是没有错.可以顺利的运行,可以把记录删除了.

TOP

哈哈,想能了,明白了,理解了.单独作测试的时,bh里面是空的,因为没有记录的.所以出错.和删除页做了连接后写入了删除数据,所以...哈哈,我真是太聪明了....

TOP

TOP

出现这中情况呢,最好能在最开始判断你要获取的值是否为空或不合法,转到一个错误提示页面,这样有利于网站安全,让别人看不到你的出错信息,

TOP

楼主是新手,刚开始写这样的代码还是可以理解的。
楼主的代码个人建议加强验证方面的考虑,不知道楼主目前的基础如何,刚学习2个星期可能还考虑不到编码安全方面的考虑,所以还是值得理解。
http://www.lxzhcn.net
版块版主招募中
网站论坛发帖无问题,欢迎发帖。

TOP

发新话题