在postgres insert/update中正确分隔单引号

Correctly delimit single quotes in postgres insert/update

本文关键字:分隔 单引号 update postgres insert      更新时间:2023-09-26

我很难弄清楚如何在postgreSQL UPDATE语句的文本字段中分隔任何单引号。如果我考虑以下,用''代替'似乎是需要的,它仍然不像我期望的那样起作用。另外,如果有人在字符串中发送''',您该怎么办?

var userid = request.decoded.id;
var incomingString = "Hello I'm a user.";
var newBio = incomingString.replace("'", "''");
pg.connect(process.env.DATABASE_URL, function(err, client, done){
                   client.query("UPDATE users SET bio = "+newBio+" WHERE user_id = "+userid+"", function(err, result){
                                done();
                                if(err){
                                response.json({message:"err in db input."});
                                }
                                else{
                                response.json({message:"success"});
                                }
                                });
                   });

我是否应该简单地将上面的SQL语句更改为如下所示?这是否解决了SQL注入漏洞和需要转义单引号?

"UPDATE users SET bio = $1 WHERE user_id = $2", [newBio, userid]", 

您不应该手动转义SQL特殊字符。

你的第二个例子是正确的。使用准备/参数化语句消除SQL注入威胁。