Postgresql使用变量

时间:2016-09-02 22:09:05

标签: sql node.js postgresql

我有2个变量

var anycolumn = 'fruit';
var anyvalue = 'apple';

我能够使用变量'anyvalue'插入值,如...

"INSERT INTO mytable (fruit) VALUES ($1)", [anyvalue], function(err, result){}

现在如何使用变量'anycolumn'插入列名?

我正在使用节点服务器

"INSERT INTO mytable (anycolumn) VALUES ($1)", [anyvalue], function(err, result){}

2 个答案:

答案 0 :(得分:0)

"INSERT INTO mytable ("+anycolumn+") VALUES($1)", [anyvalue]...

但请确保您确定anycolumn包含的内容。不要使用直接或间接从外部接收的内容(例如HTTP请求,以参数,正文,cookie,标题......的形式)而不验证它,否则您将获得可怕的SQL注入

另请注意,这可能意味着您的数据库架构不正确,并且您应该有一个包含name列和value列的表。

答案 1 :(得分:0)

以下示例基于pg-promise

db.none('INSERT INTO mytable($1~) VALUES($2)', [anycolumn, anyvalue])
    .then(()=> {
        // success;
    })
    .catch(error=> {
        // error;
    });

使用相同的SQL Names语法,您也可以注入表名。