pgsql查询:第一个字符引用的值

时间:2016-10-25 13:36:23

标签: javascript postgresql

我需要在js中构建一个postgreSQL查询:

var value = "something";
var query = "INSERT INTO table VALUES ('" + value + "')";

因为变量"值"可以包含引号,我也通过修改我的原始代码使所有引号加倍:

var value = "something with quotes maybe";
var query = "INSERT INTO table VALUES ('" + value.replace("'", "''") + "')";

除非字符串值以引号开头,否则它适用于大多数情况。 如何解决"报价问题"如果引用是值的第一个字符?

1 个答案:

答案 0 :(得分:1)

转义引号字符还有很多,请参阅SQL injection

根据您使用的Javascript / Postgres库,可能会有一些SQL字符串转义功能,您可以使用。

但真正的解决方案是使用prepared statements,这完全消除了这个问题。

我不知道,如果存在这样的Javascript / Postgres库。但是如果有的话,你的陈述会变成这样的东西(这主要是模仿PHP或Java等语言的样子)

var value = "something with quotes maybe";
var sql = "INSERT INTO table VALUES (?)";
var stmt = conn.prepare(sql);
stmt.execute(value);

查看node-postgresParameterized queries and Prepared Statements,这将是

var value = "something with quotes maybe";
var sql = "INSERT INTO table VALUES ($1)";
client.query(sql, [value]);