【发布时间】:2019-01-23 13:52:29
【问题描述】:
我正在尝试编辑/更新已输入表单的详细信息。当我尝试自行更新地址时,它可以工作。但是,当我尝试更新多个列时,它不会。我假设以下代码存在问题,因为它适用于一个实体但不超过一个。
Update register set (address, contact) = concat('"+address+"', '"+mob+"');
这是java代码。这是错误显示,jsp显示为空白页
try{
String session_id =null;
HttpSession session1=request.getSession(false);
if(session1!=null){
session_id=(String)session1.getAttribute("name");
}
String name = request.getParameter("name");
String email = request.getParameter("email");
String pass = request.getParameter("password");
String address = request.getParameter("address");
String mob = request.getParameter("contact");
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/alt", "root", "");
Statement stmt = con.createStatement();
stmt.execute("Update register set (address, contact) = concat('"+address+"', '"+mob+"') where uid='"+session_id+"'");
out.println("registration success");
response.sendRedirect("login.jsp");
}catch(Exception e){
}
%>
【问题讨论】:
-
你需要使用
UPDATE <table> SET <column1> = <value1>, <columns2> = <value2> -
它显示一个空白页,因为您正在吞咽/忽略异常。永远不要这样做,至少记录它或将它打印到错误中(例如
e.printStackTrace())。无论如何,您的查询是错误的;查看 MySQL 文档中的正确语法。此外,永远不要将值连接到查询字符串中。这是不安全的,并且使您的代码容易受到 SQL 注入的攻击。请了解准备好的语句。