ASP删除新闻出错

我是新手,变量搞不懂,请大侠帮忙<tdwidth="513"height="24"><b>[<%Response.WriteoRs("News_ID")%>]</b><%... 我是新手,变量搞不懂,请大侠帮忙

<td width="513" height="24"><b>[<%Response.Write oRs("News_ID")%>]</b><%Response.Write oRs("News_Title")%></td>
<td width="106" align="center"><a href=SET_News_Update.asp?ID=<%=oRs("News_ID")%>>修 改</a></td>
<td width="111" align="center"><a onclick="javascript:if(confirm('确定删除?删除后不可恢复!')){window.location.href='SET_News_list.asp?id=<%=oRs("News_ID")%>&del=ok';}else{history.go(0);}" class="btn"/>删 除</a></td>

</tr>
<%
oRs.movenext
next

%>
<tr>
<td height="24" colspan="4" align="center">

<%Call Page()%>

</td>
</tr>
<tr>
<td height="24" colspan="4" align="center"> </td>
</tr>
</table>
<%Call DBConnEnd()%>
</body>
</html>
<%
Dim id,conn
if request("del")="ok" then
set rs=server.createobject("adodb.recordset")
id=Request.QueryString("News_ID")
sql="select * from news where News_ID="&id
rs.open sql,conn,2,3
rs.delete
rs.update
Response.Write "<script>alert('删除成功!');window.location.href='SET_News_list.asp';</script>"
end if
%>
ADODB.Recordset 错误 '800a0bb9'
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
/web/admin/SET_News_list.asp,行 111

改了ID,但这个还是提示有错误呢?
展开
 我来答
网海1书生
科技发烧友

推荐于2016-10-10 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部

id=Request.QueryString("News_ID")

改为

id=Request.QueryString("id")


你网页前端传递过来的参数只有id和del,并没有News_ID!请看:

SET_News_list.asp?id=<%=oRs("News_ID")%>&del=ok



补充回答:

把 Dim id, conn 这行删掉!


再次补充:

conn已经被你关掉了,所以就没有了
你把 <%Call DBConnEnd()%> 这行移到整页代码的最后面去就行了,因为DBConnEnd()这个函数会把conn关闭,所以再执行rs.open sql,conn,1,1的时候就出错了。应该先执行rs.open sql,conn,1,1,最后再执行Call DBConnEnd()

另外,整个删除的过程最好改成这样:
<%
If request("del")="ok" then
   conn.execute "delete * from news where News_ID=" & request("id")
   response.write "<script>alert('删除成功')....这里略....</script>"
End If
%>

更多追问追答
追问
Dim id, conn 这行删掉,会提示错误如下:

Microsoft VBScript 运行时错误 错误 '800a01f4'
变量未定义: 'id'
/web/admin/SET_News_list.asp,行 106
追答
Dim id 即可
如果是
Dim id, conn
则conn会被重新定义,也就是变成空了!
此外就是我上面说的,要把移到最后!
百度网友3cb80af
2014-06-06 · TA获得超过9535个赞
知道大有可为答主
回答量:1.2万
采纳率:83%
帮助的人:3964万
展开全部
<%Response.Write oRs("News_ID")%>写成<%=oRs("News_ID")%>提高了不少效率。

SET_News_list.asp?id=<%=oRs("News_ID")
你上面明明用了id参数,你下面又取news_id的值,根本没有这个参数好不好,

你要取的是id,因为上面,news_id已经附值到ID这个参数上了。
id=Request.QueryString("id")
这样就能正常的取到值 了。

还有删除,没必要重新再开记录集,
可以直接
conn.execute("delete from news where id="&request("id")&"")
"&request("id")&"有可能要写成'"&request("id")&"',反正试试就行了。

如果用你的办法rs.delete的话,是不需要rs.update的,因为删除是不需要更新的,删除后,数据会整行删除,并不存在着要更新什么东西。
更多追问追答
追问
rs.open sql,conn,1,1

这个提示有错误
追答
我去,明明你用着2.3好好的,你为毛改成11啊,1.1是只读权限,你是要删除,,删除你搞个只读权限,肯定错误啦。

你这里的问题就是那个参数问题,跟别的无关,
因为SET_News_list.asp?id=

你地址带的参数叫作ID,
你取的时候就取:request("id")就可以取到它了,
比如:xxxx.asp?abc="123"
request("abc")的值就是123了,,明白否?

更新删除都需要权限的,

只有在读取不做数据库修改,删除,添加动作时才会用 1 1

如果有人教你这里改成11的话,你可以直接忽视他的指点了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chenrongchun89
2014-05-23 · 超过84用户采纳过TA的回答
知道小有建树答主
回答量:285
采纳率:0%
帮助的人:139万
展开全部
&del=ok

初步看了下,上面那个怎么改还有“;”分号

下班了,如果解决了就好,没有解决有时间再看下
更多追问追答
追问
  把del=ok换成&del=ok了,没有出错提示了,但是该条记录没有删除

 
追答
你打印出来看下

发现错误用打印出来的信息来判断是哪里错了

例如有if语句,则可以,如果成立打印“成立”,如果不成立,则打印“不成立”的信息来让自己知道是执行了哪句

你这里面有删除相对应的新闻,那么你可以打印出你要删除的id为多少,来知道是否获取到了id,一步步慢慢来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式