1

1 回のバッチ操作で挿入したいアイテムが最大 100 個あります。私はこのようにやっています:

INSERT INTO MyTable (f1, f2, ..., fk) VALUES
  (v11, v12, ..., v1k),
  (v21, v22, ..., v2k),
  ...
  (vn1, vn2, ..., vnk)

すべて問題ありませんが、値をそのまま連結してこの文字列を作成しています。これは、コードが SQL インジェクションに対して脆弱であることを意味します。

SQL インジェクションから保護しながら、一括挿入構文を引き続き使用するにはどうすればよいですか?

編集1

もう少し文脈を提供したいと思います。私が使用しようとしている実際の SQL (まさにこの瞬間にコードを書いています) は、次の形式を持っています。

WITH new_parent AS (
  INSERT into parent (g1, g2, ..., gm) VALUES (v1, v2, ..., vm) RETURNING id
) INSERT INTO MyTable (parent_id, f1, f2, ..., fk) VALUES
  (new_parent.id, v11, v12, ..., v1k),
  (new_parent.id, v21, v22, ..., v2k),
  ...
  (new_parent.id, vn1, vn2, ..., vnk)
4

2 に答える 2

1

可能であれば、COPY ステートメントを使用します。データが異なるチャネルを使用するため、少し高速で、必要なメモリが大幅に少なく、SQL インジェクションの防弾です。

于 2013-10-20T13:22:07.987 に答える