jsp连接数据库,经过页面穿过来的值来确定修改哪个属性的值,但却报错,求解,本人新手

jsp连接数据库,通过页面穿过来的值来确定修改哪个属性的值,但却报错,求解,本人新手
  public String upda(String a,String b,String c)
    {
    try{
     Class.forName(driver);
     Connection con=DriverManager.getConnection(url,"root","123456");
     String sql="update customers set ?=? where customerID=?";
     PreparedStatement p =con.prepareStatement(sql);
     p.setString(1,b);
     p.setString(2,c);
     p.setString(3,a);
    
     p.executeUpdate();
     con.close();
     return "success111";
    }
    catch(Exception e)
    {
     return e.getMessage();
    
    }
    }
报错如下
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''name'='b' where customerID='a'' at line 1 
------解决思路----------------------
String sql="update customers set ?=? where customerID=?

set ?=?,   因为第一个占位符是sql,在预编译时不能通过。
你可以把set中的第一个占位符写入方式改成Statement的方式而不是用PreparedStatement
两个之间的差别自己可以百度下。。

------解决思路----------------------
你把set ?=?第一个问号改成字段名,参数化传值不允许这样的,它只允许传入第二号问号所在位置的值jsp连接数据库,经过页面穿过来的值来确定修改哪个属性的值,但却报错,求解,本人新手 
------解决思路----------------------
不要用?=?,用字符串拼接,例如"update customers set "+b+"=? where customerID=?",在看看你的ID类型是否是字符型的。
------解决思路----------------------
直接字符串拼接把字段名加进去  用preparedstatement传入的值是有类型的  你传入string类型   字段名就变成了  '字段名'  带有引号了  无法识别