我正在桥接R和psql,希望删除sql注入的漏洞。看文档,我曾希望:
postgresqlExecStatement(con, statement, params, ...)
允许使用类似的东西:
postgresqlExecStatement(con, "DELETE FROM foos WHERE id = ? AND baz = ?", c(1, "bar"))
但不幸的是,这似乎不起作用。也许我用错了 参数的符号(除了?之外的东西。)。
我发现最好的妥协是通过以下方式逃避字符串:
postgresqlEscapeStrings(con, string)
(注意:连接是必要的,因此功能可以知道如何正确逃脱)。
意味着当我放在一起时,我必须在粘贴中使用每个字符串 我的疑问。不那么优雅。但似乎是最好的选择。任何人都有其他 想法?
答案 0 :(得分:0)
使用
postgresqlExecStatement(con, "DELETE FROM foos WHERE id = $1 AND baz = $2", list(1, "bar"))
我总是传递我的参数作为列表绑定,因为c
会强制它进入一个模式。如果此语句成功,您还必须清除属于con
的结果,然后才能再次使用它。
另外,请注意hadley对使用新包RPostgres
的评论。