我正在编写代码来重置用户密码。但是,当我登录并尝试更改密码时,数据库中存储的每条记录中都会更新新密码,即输入的新密码将更新为所有记录的新密码。我尝试编辑更新查询,但遇到语法错误,如何修复?
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
</body>
</html>
<%@page import="java.sql.*"%>
<%@page import="java.io.*"%>
<%
String OldPassword = request.getParameter("OldPassword");
String Newpass = request.getParameter("newpassword");
String conpass = request.getParameter("conpassword");
Connection con = null;
Statement st = null;
String pass = "";
int id = 0;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/form";
con = DriverManager.getConnection(url, "root", "");
st = con.createStatement();
ResultSet rs = st.executeQuery("select * from login where password= '"+ OldPassword + "'");
if (rs.next()) {
pass = rs.getString("password");
}
if(Newpass.equals(conpass))
{
if (pass.equals(OldPassword)) {
st = con.createStatement();
int i = st.executeUpdate("update login set password='"+ Newpass + "'");
out.println("Password changed successfully");
st.close();
con.close();
} else {
out.println("Old Password doesn't match");
}
/*}else{
out.println("new password and confirm new password is not matching");
}*/
}
} catch (Exception e) {
out.println(e);
}
%>
最佳答案
您还需要在查询中添加一个 where 子句,将密码更新限制为仅限该用户。
您可以使用用户的 ID 来更新密码。
您可以找到用户 ID
if (rs.next()) {
pass = rs.getString("password");
id = rs.getString("id");
}
那么您更新的查询将是:
st.executeUpdate("update login set password='" + Newpass + "' where id='" + id + "'");
关于java - 在数据库中更新相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49478388/