我正在使用 Rails 通过传递动态列和表名从 Postgresql 获取数据。
我不能使用 ActiveRecord,因为从 shapefile 导入的形状数据是动态的,表名和列名都是动态的。我必须在查询中使用带有列名的双引号以避免出现诸如列名之类的问题:例如,“addr:city”。
def find_by_column_and_table(column_name, shape_table_name)
sql = "SELECT \"#{column_name}\" FROM \"#{shape_table_name}\" WHERE \"#{column_name}\" IS NOT NULL"
ActiveRecord::Base.connection.select_one(sql)
end
2个生成sql语句的例子:
SELECT "place" FROM "shp_6c998258-32a6-11e0-b34b-080027997e00"
SELECT "addr:province" FROM "shp_6c998258-32a6-11e0-b34b-080027997e00"
我想确保查询中没有 sql 注入。
谁能指出我如何解决这个问题?