去和多线论证地狱

时间:2016-10-31 19:24:57

标签: sql postgresql go pg

当我遇到一个相当恼人的事情时,我正在写一个关于pg的包装器/验证器...传递很长的字符串作为参数。 基本上我有这个字符串:

"UPDATE " + m["table"] + "_tags SET keys = keys || ," + strconv.Itoa(key) + " WHERE tag = " + t + ";" + "INSERT INTO "  m["table"] + "_tags (tag,keys) SELECT '" + t + "', '" + strconv.Itoa(key) + ") WHERE NOT EXISTS(SELECT 1 FROM " + m["table"]"_tags WHERE tag = " + t + ");"

好吧,大,不喜欢,充满'和'......地狱。 但这就是SQL查询的外观,坦率地说,我无法想到一种动态组合它们的更好方法。

所以在像C ++这样的合理语言中,这只会起作用。 在JavaScript中,我会在每个......等的末尾添加“\”

是否有这样的机制? 我之前听说在每一行的末尾添加“,”相当于\ javascript中的\但是这个文档似乎编写得很差,大多数在线示例都引用了以下内容:

“更改您的SQL查询”(可行,但不完全是我想要的低级语言解决方案)。 “在开始和结束时使用”......但是因为没有办法逃脱'内部'会有点困难(增加额外的6 * +操作符)而且我很不确定是否包装'工作时我里面有+连接。 建议?

(我能想到的最好的是在参数之外构造字符串,但再一次看起来像是hack-ish)

1 个答案:

答案 0 :(得分:0)

创建模板:

y

然后传入参数。

P.S。这可能容易受到摄取攻击,在插入之前验证这些值。