在尝试与Postgresql数据库交互时遇到问题,当输入root
作为pseudo
时出现错误:
列根不存在:
NodeJS代码:
app.get('/login',function(request,response){
var username = request.query['username'];
var password = request.query['password'];
console.log("utilisateur "+ username +" avec "+ password +" comme mot
de passe");
const pool = new Pool(config);
sql = 'select * from users where pseudo = "' + request.query["username"] + '";';
pool.on('error',function(err,client){
console.log("erreur de connexion",err);
});
pool.query(sql,function(err,res){
if (err){return console.error('erreur dexécution !!',err,sql);}
console.log('nom:', res.rows[0].nom, ' prenom:', res.rows[0].prenom,' pseudo:', res.rows[0].pseudo);
});
});
答案 0 :(得分:0)
您的问题可能是因为postgresql字符串需要单引号,但您使用的是双引号。尝试这样的事情:
sql = `select * from users where pseudo = '${username}';`;
但是此代码包含一个令人讨厌的安全漏洞,称为SQL injection。考虑一下如果用户输入了(假)用户名root OR 1 = 1; --
,将发送到数据库的SQL。一个简单的解决方案是使用parameterized queries。
答案 1 :(得分:0)
最后我只需要这样写我的sql查询:
sql = `select * from users where pseudo = '${ username }' `;