我想知道是否还有使用预准备语句指定返回的列名.
我正在使用MySQL和Java.
当我尝试它:
String columnNames="d,e,f"; //Actually from the user...
String name = "some_table"; //From user...
String query = "SELECT a,b,c,? FROM " + name + " WHERE d=?";//...
stmt = conn.prepareStatement(query);
stmt.setString(1, columnNames);
stmt.setString(2, "x");
Run Code Online (Sandbox Code Playgroud)
我得到这种类型的声明(在执行之前打印).
SELECT a,b,c,'d,e,f' FROM some_table WHERE d='x'
Run Code Online (Sandbox Code Playgroud)
不过我想看到:
SELECT a,b,c,d,e,f FROM some_table WHERE d='x'
Run Code Online (Sandbox Code Playgroud)
我知道我不能这样做表名,正如这里讨论的那样 ,但是想知道是否有某种方法可以为列名做这些.
如果没有,那么我将只需要尝试确保我清理输入,这样就不会导致SQL注入漏洞.