不能在postgres插入中插入问号

时间:2017-09-23 04:06:13

标签: node.js postgresql knex.js

我试图运行一个简单的Postgres SQL插件:

insert into "Resources" values(1, 'How are you?');

但是插入后的结果是:

ID        Data
---       ------
1         How are you$1

我知道,要插入像单引号这样的字符,我必须使用另一个单引号来逃避它:我无法做到。

但该怎么办?

1 个答案:

答案 0 :(得分:4)

Knex将???解释为位置绑定。您通常会在knex.raw()语句中使用它们来安全地注入某种变量。例如:

knex.raw('UPDATE my_table SET my_column = ?', [someVariable])

对于这样的绑定参数,通常需要使用原始语句来确保您注入的内容安全地被转义。

这就是为什么你看到了这种行为。好消息是,你可以逃避问号。来自Knex.js documentation

  

防止更换?可以使用转义序列\\?。