我最多有 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)