试图在postgres上做一个sql更新9.注意等号左边的$ 1。这将是传入的表中的列的名称。当我硬编码列名时,更新完美。但是,当我尝试通过列作为参数($ 1),更新失败。为什么,以及如何解决这个问题?等号左边的sql位置参数
pg.connect(connectionString,function (err, client) {
client.query("UPDATE people SET $1 = $2 WHERE pin = $3 RETURNING pin",
[param1, param2, param3], function(err, result){
if(err) {
console.log("Error updating data: ", err);
res.send(false);
}else{
res.send(true);
}
});
});
您可以将列名想像为其他语言中的变量名,因此允许使用它们的占位符类似于使用'eval',所以它通常是不允许的。检查数据库接口的文档中的“引用标识符”或“转义标识符”函数,使用该函数正确引用'param1'并使用字符串连接来将引用的值存入SQL。请注意,标识符(例如表格或列名称)的引用规则与值不同,因此请务必使用正确的引用函数。 –