【问题标题】:I am trying to update my mySQL database, however when I try update more than one column an error occurs我正在尝试更新我的 mySQL 数据库,但是当我尝试更新多个列时会发生错误
【发布时间】: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 注入的攻击。请了解准备好的语句。

标签: java mysql sql jdbc


【解决方案1】:

试试这个更新语法:

    update register set
    address = concat('"+address+"', '"+mob+"'),
    contact = concat('"+address+"', '"+mob+"')
    where uid='"+session_id+"'");

【讨论】:

  • 条件缺失的地方
  • 然后将其添加到您的答案中
猜你喜欢
  • 2022-01-25
  • 1970-01-01
  • 2022-01-08
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 2016-05-29
  • 2013-08-25
  • 2017-12-14
相关资源
最近更新 更多