我在mysql数据库中有两张表,一张用于学生,一张用于教师。两个表都有相同的列。
下面的代码仅将数据插入到教师的表中。如果用户选择教师的单选按钮,则注册数据应存储在教师的表中。如果用户选择学生电台,则注册数据应存储在学生表中。有什么解决方案吗?
index.jsp
<form method="GET " action="statement2.jsp" autocomplete="on">
<input type="radio" name="gender" value="Teacher" checked/> Teacher
<input type="radio" name="gender" value="Student"/>Student
<input type="submit" value="Login" />
<input type="button" onclick="location.href='reg.jsp';" value="Sign Up" />
</form>
<小时/>
statement2.jsp
<%
String name=request.getParameter("first");
String abc=request.getParameter("last");
String cde=request.getParameter("user");
String pass=request.getParameter("password");
String confpass=request.getParameter("confirmpass");
String emails=request.getParameter("email");
String months=request.getParameter("month");
String day=request.getParameter("day");
String year=request.getParameter("year");
String gender=request.getParameter("gender");
String Sql="insert into teacher2(firstname,lastname,username,password,confirmpassword,email,month,day,year,gender) values('"+name+"','"+abc+"','"+cde+"','"+pass+"','"+confpass+"','"+emails+"','"+months+"','"+day+"','"+year+"','"+gender+"')";
st.executeUpdate(Sql);
%>
修正后 statement2.jsp
<%
String name=request.getParameter("first");
String abc=request.getParameter("last");
String cde=request.getParameter("user");
String pass=request.getParameter("password");
String confpass=request.getParameter("confirmpass");
String emails=request.getParameter("email");
String months=request.getParameter("month");
String day=request.getParameter("day");
String year=request.getParameter("year");
String gender=request.getParameter("gender");
if (gender != null) {
String table = gender.equals("teacher") ? "teacher2" : "student";
// replace dots with your values
String query = "INSERT INTO " + table + "(firstname,lastname,username,password,confirmpassword,email,month,day,year,gender) VALUES ('"+name+"','"+abc+"','"+cde+"','"+pass+"','"+confpass+"','"+emails+"','"+months+"','"+day+"','"+year+"','"+gender+"')";
st.executeUpdate(query);
%>
<小时/>
这个查询出了什么问题。为什么这个查询只在一个学生表中插入数据
index.jsp
<input type="radio" name="gender" value="teacher" checked/> Teacher
<input type="radio" name="gender" value="Student"/>Student
statement2.jsp
String gender = request.getParameter("gender");
if (gender != null) {
String table = gender.equals("teacher") ? "teacher2" : "student";
// replace dots with your values
String query = "INSERT INTO " + table + "(firstname,lastname,username,password,confirmpassword,email,month,day,year,gender) VALUES ('"+name+"','"+abc+"','"+cde+"','"+pass+"','"+confpass+"','"+emails+"','"+months+"','"+day+"','"+year+"','"+gender+"')";
st.executeUpdate(query);
最佳答案
只需选择一个适当的表,然后将其传递到您的查询语句
<%
String gender = request.getParameter("gender");
if (gender != null) {
String table = gender.equals("teacher") ? "teacherTable" : "studentTable";
// replace dots with your values
String query = "INSERT INTO " + table + "(...) VALUES (...)";
st.executeUpdate(query);
}
%>
请注意,重定向到另一个 jsp 并在那里使用 scriplet(规范不鼓励这样做)来处理提交的数据并不是最佳选择。我宁愿建议您将表单提交到 Servlet 并在那里编写所有 Java 代码。
此外,您可能希望优先查看 PreparedStatement
,而不是 Statement
。
如果您有兴趣,请查看这些答案
How to avoid Java code in JSP files?
When should we use a PreparedStatement instead of a Statement?
关于java - 根据jsp中的输入选择表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38678808/