0

Rails を使用して、動的な列とテーブル名を渡して Postgresql からデータを取得しています。

シェープファイルからインポートされた形状データは、テーブル名と列名の両方が動的であるため、ActiveRecord を使用できません。たとえば、「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

生成された sql ステートメントの 2 つの例:

SELECT "place" FROM "shp_6c998258-32a6-11e0-b34b-080027997e00"
SELECT "addr:province" FROM "shp_6c998258-32a6-11e0-b34b-080027997e00"

クエリにSQLインジェクションがないことを確認したい。

誰かがこの問題を解決する方法を教えてもらえますか?

4

1 に答える 1

1

インジェクションを防ぎ、クエリを高速化し、エラーをキャッチするための推奨される方法は、位置パラメータまたは保存されたプロシージャを使用することです。それ以下のものはトラブルを求めています。

于 2011-02-11T04:03:12.247 に答える