Мне было интересно, если в любом случае указывать имена возвращенных столбцов, используя подготовленные операторы.
Я использую 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");
Я получаю этот тип утверждения (печать перед выполнением).
SELECT a,b,c,'d,e,f' FROM some_table WHERE d='x'
Я хотел бы видеть, однако:
SELECT a,b,c,d,e,f FROM some_table WHERE d='x'
Я знаю, что я не могу это сделать для имен таблиц, как обсуждалось здесь, но задавался вопросом, есть ли способ сделать это для имен столбцов.
Если этого не произойдет, тогда мне просто нужно попробовать и убедиться, что я дезинфицирую вход, поэтому он не приводит к уязвимости SQL-инъекций.