Versuch, ein SQL-Update für Postgres zu machen 9. Beachten Sie die $ 1 auf der linken Seite des Gleichheitszeichens. Das ist der Name einer Spalte in einer Tabelle, die übergeben wird. Wenn ich einen Spaltennamen fest codiere, funktioniert das Update perfekt. Aber wenn ich versuche, die Spalte als Parameter ($ 1) zu übergeben, schlägt die Aktualisierung fehl. Warum und wie repariere ich das?sql Positionsparameter auf der linken Seite eines Gleichheitszeichens
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);
}
});
});
Sie können sich Spaltennamen ähnlich wie Variablennamen in anderen Sprachen vorstellen, so dass Platzhalter für sie ähnlich wie "eval" sind, so dass es im Allgemeinen nicht erlaubt ist. Überprüfen Sie die Dokumentation Ihrer Datenbankschnittstelle auf eine "Quote Identifier" - oder "Escape Identifier" -Funktion, verwenden Sie diese Funktion, um 'param1' richtig zu zitieren, und verwenden Sie eine String-Verkettung, um den in Anführungszeichen gesetzten Wert in Ihr SQL zu bekommen. Beachten Sie, dass Bezeichner (z. B. Tabellen- oder Spaltennamen) andere Anführungsregeln als Werte haben, also achten Sie darauf, die richtige Anführungsfunktion zu verwenden. –