首页 > 解决方案 > 使用变量作为 SET 值时,“where 子句”中的未知列“”

问题描述

String SQL_UPDATE = "UPDATE `club_juvenil` SET "+SET_MySQL+" = "+nuevo_valor.getText().toString()+" WHERE dni_competidor = "+wher_combo.getSelectedItem().toString()+" ";

你好。我正在尝试使用 Java 更新 MySQL 上的表,但在“where 子句”中出现错误 Unknown column '(value from wher_combo)'我正在尝试使用 SET 值中的变量从一个切换到另一个列(这是我决定这样做的主要原因),但是 WHERE 似乎正在将 wher_combo 值作为列读取,并且显然会导致错误,因为该列在表上不存在。

标签: javamysqljdbcmysql-error-1054

解决方案


假设这SET_MySQL是该表中的有效列,则该语句应使用带引号的字符串,因为 user3088799 已经回答。

但是请注意,像这样将未知数据直接附加到 SQL 查询字符串是非常危险的,永远不应该这样做。您可以在此处阅读有关准备好的语句,它提供了一种将任意数据作为参数传递的安全方法。

另请参阅“Bobby Tables”XKCD 漫画中的 SQL 注入如何工作?Java - 转义字符串以防止 SQL 注入


推荐阅读