ASP删除新闻出错
<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,但这个还是提示有错误呢? 展开
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会被重新定义,也就是变成空了!
此外就是我上面说的,要把移到最后!
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的话,你可以直接忽视他的指点了。
初步看了下,上面那个怎么改还有“;”分号
下班了,如果解决了就好,没有解决有时间再看下
把del=ok换成&del=ok了,没有出错提示了,但是该条记录没有删除
你打印出来看下
发现错误用打印出来的信息来判断是哪里错了
例如有if语句,则可以,如果成立打印“成立”,如果不成立,则打印“不成立”的信息来让自己知道是执行了哪句
你这里面有删除相对应的新闻,那么你可以打印出你要删除的id为多少,来知道是否获取到了id,一步步慢慢来