我有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){}
答案 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语法,您也可以注入表名。