这是我的代码: 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>
我正在尝试制作一个按钮,当我点击它时,它会删除我网站上的所有帖子,但是当我点击它时,它不会做任何事情
答案 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
。它应该工作。如果您想出任何错误消息,请告诉我。