我不明白为什么删除按钮在jsp中对我不起作用

时间:2018-01-17 06:52:17

标签: html jsp

这是我的代码: AdminDelete.jsp:

<%@ page import ="java.sql.*" %>
<%
String uid = session.getAttribute("uid").toString();     
String content = request.getParameter("content");
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/upload_hub",
        "root", "root");


Statement st = con.createStatement();
int t= st.executeUpdate("DELETE * FROM post WHERE(uid like'"+uid+"' AND content like'"+content+"')");
if(t>0){
    response.sendRedirect("../Admin.jsp");
}

%>

这是在Admin的索引中:

<form method="send" action="functions/AdminDelete.jsp" >
    <h3>delete all posts:</h3>
    <%  String content = request.getParameter("content");%>
    <input type="button" value="delete" id="content">

     </form>

我正在尝试制作一个按钮,当我点击它时,它会删除我网站上的所有帖子,但是当我点击它时,它不会做任何事情

1 个答案:

答案 0 :(得分:0)

我无法在评论中写下完整的答案。所以写答案。正如我在评论中提到的。您需要在LIKE之后添加空格。还使用PreparedStatement

<%@ page import ="java.sql.*" %>
<% String uid = session.getAttribute("uid").toString();
String content = request.getParameter("content");
Class.forName("com.mysql.jdbc.Driver"); 
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/upload_hub", "root", "root"); 
PreparedStatement ps = con.prepareStatement("DELETE FROM post WHERE uid like ? AND content LIKE ?"); 
ps.setString(1, "%" + uid + "%");
ps.setString(2, "%" + content + "%");
int t= ps.executeUpdate(); 
try {
    con.close();
} catch(Exception e) {
    e.printStackTrace();
}
if(t>0){
    response.sendRedirect("../Admin.jsp"); 
} 
%>

此处需要注意的一点是,您需要验证UID中设置了session并在请求参数中设置了content

您还使用了method="send"。而是使用method="POST"

<form method="POST" action="functions/AdminDelete.jsp" > 
    <h3>delete all posts:</h3>
    <input type="text" name="content" /> 
    <input type="submit" value="Delete" />
</form>

假设数据库中的一条记录的UID包含字母a,并且与此记录content对应的值包含b。现在以表单形式输入b提交数据,并确保会话中的UID值设置为a。它应该工作。如果您想出任何错误消息,请告诉我。