gpt4 book ai didi

mysql - 在 Node.js 路由中使用 req.query.ID 和多个 sql 语句返回未定义

转载 作者:行者123 更新时间:2023-11-29 16:07:11 25 4
gpt4 key购买 nike

我正在尝试使用 req.query.ID 调用显示一些信息。我想我明白为什么它返回未定义,但我不知道我的假设是否正确。如果我将值硬编码到查询中,我可以获得所需的输出,但当我使用 req.query.ID 时则无法获得所需的输出。

这是一项学校作业,因此 SQL 注入(inject)和漏洞正是我现在最关心的问题。

app.post('/login', function(req, res) {


var sql = "Select * from UserInfo where UserEmail = '"+ req.body.UserEmailLogin +"'";
con.query(sql, function(error, results, fields){
if(error){
console.log(error);
}

console.log(results);
res.redirect('profile?ID=' + results[0].UserID);
})
});


app.get('/profile', function(req, res){

var sqlQuery = 'Select UserID, UserFirstName, UserLastName from UserInfo where UserID = ' + req.query.ID; +
' SELECT * FROM GroupCreate LEFT JOIN UserInfo ON UserInfo.UserID = GroupCreate.UserInfo_UserID LEFT JOIN GroupInfo ON GroupInfo.GroupID = GroupCreate.GroupInfo_GroupID Where UserInfo_UserID = ' + req.query.ID; +
' Select * from GroupInfo where GroupType = "Sports";'
con.query(sqlQuery, function(error, results, fields){
if(error) throw error;

res.render('profile', {
title: "Profile",
results: results[0],
results1: results[1],
results2: results[2],
Username: results[0].UserFirstName + " " + results[0].UserLastName
});
console.log(results[0]);
console.log(results[1]);
console.log(results[2]);
});

});

如果我硬编码值“1”(其中 req.query.ID 都位于 app.get 部分),则问题不会持续存在。

url 参数最终看起来像 http://localhost:3000/profile?ID=1但 results:results[1] 和 results:results:[2] 返回未定义。

最佳答案

如果您担心 SQL 注入(inject),那么切勿通过附加值来构造 SQL 查询,而应以参数格式传递值。我假设您正在使用 mysql 包。

connection.query('SELECT * FROM table WHERE id=?',[id], (err, results) => {
// Do whatever you want to
}
);

我猜为什么你的 res.redirect('profile?ID=' + results[0].UserID); 不起作用是因为值可能不是 URL 安全的(巨大的假设从我这边)。尝试一下这个方法,如果不起作用请回复我。

res.redirect('profile?ID=' +encodeURIComponent(results[0].UserID));

引用encodeURIComponent()

关于mysql - 在 Node.js 路由中使用 req.query.ID 和多个 sql 语句返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55624997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com