使用变量作为 SET 值时 'where clause' 中的未知列 ''
Unknown column '' in 'where clause' while using variable for SET value
String SQL_UPDATE = "UPDATE `club_juvenil` SET "+SET_MySQL+" = "+nuevo_valor.getText().toString()+" WHERE dni_competidor = "+wher_combo.getSelectedItem().toString()+" ";
你好。
我正在尝试使用 Java 在 MySQL 上更新 table,但我在 Unknown column '(value from wher_combo)' 中收到错误=16=] 我正在尝试使用 SET 值中的变量从一个列切换到另一列(这是我决定这样做的主要原因),但是 WHERE 似乎是这样正在读取 wher_combo 值作为列,显然会导致错误,因为 table.
上不存在该列
你好像忘记引用了。像这样,你能试试吗? :
" WHERE dni_competidor = '"+wher_combo.getSelectedItem().toString()+"' ";
假设 SET_MySQL
是 table 中的有效列,那么该语句应该使用带引号的字符串,正如 user3088799 已经回答的那样。
但是请注意,像这样将未知数据直接附加到 SQL 查询字符串是非常危险的,永远不要 这样做。您可以阅读准备好的语句 here,它提供了一种将任意数据作为参数传递的安全方法。
另见 How does the SQL injection from the “Bobby Tables” XKCD comic work? and Java - escape string to prevent SQL injection
String SQL_UPDATE = "UPDATE `club_juvenil` SET "+SET_MySQL+" = "+nuevo_valor.getText().toString()+" WHERE dni_competidor = "+wher_combo.getSelectedItem().toString()+" ";
你好。 我正在尝试使用 Java 在 MySQL 上更新 table,但我在 Unknown column '(value from wher_combo)' 中收到错误=16=] 我正在尝试使用 SET 值中的变量从一个列切换到另一列(这是我决定这样做的主要原因),但是 WHERE 似乎是这样正在读取 wher_combo 值作为列,显然会导致错误,因为 table.
上不存在该列你好像忘记引用了。像这样,你能试试吗? :
" WHERE dni_competidor = '"+wher_combo.getSelectedItem().toString()+"' ";
假设 SET_MySQL
是 table 中的有效列,那么该语句应该使用带引号的字符串,正如 user3088799 已经回答的那样。
但是请注意,像这样将未知数据直接附加到 SQL 查询字符串是非常危险的,永远不要 这样做。您可以阅读准备好的语句 here,它提供了一种将任意数据作为参数传递的安全方法。
另见 How does the SQL injection from the “Bobby Tables” XKCD comic work? and Java - escape string to prevent SQL injection