試圖在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。請注意,標識符(例如表格或列名稱)的引用規則與值不同,因此請務必使用正確的引用函數。 –