使用 sqlite3 和 Node 进行字符串插值
string interpolation with sqlite3 and Node
这有点新,但我在将变量插入到我的 sqlite3 查询中时遇到问题。我收到错误 { [Error: SQLITE_ERROR: no such column: shmee] errno: 1, code: 'SQLITE_ERROR' }
,在这种情况下 shmee 是 req.body.username
不确定我做错了什么?有指导吗?
app.post('/users/login', function (req, res) {
console.log(req.body)
var query = "SELECT username, password FROM users WHERE username = "+req.body.username+";"
db.all(query, function (err, data) {
if (err) {
console.log(err);
} else if (req.body.password === data.password) {
//set cookie with user info
req.session.user = data;
res.redirect('/users/'+data.username);
} else {
console.log(data)
console.log('password not correct');
res.redirect('/cbt');
}
})
});
不要将数据连接到查询字符串中;这是安全漏洞的严重来源!
使用查询参数;在任何你想将数据传递到查询中的地方,放置一个 ?
,并将其作为附加参数传递给 run
:
db.run("SELECT username, password FROM users WHERE username = ?",
username,
function(err, data) {...});
这有点新,但我在将变量插入到我的 sqlite3 查询中时遇到问题。我收到错误 { [Error: SQLITE_ERROR: no such column: shmee] errno: 1, code: 'SQLITE_ERROR' }
,在这种情况下 shmee 是 req.body.username
不确定我做错了什么?有指导吗?
app.post('/users/login', function (req, res) {
console.log(req.body)
var query = "SELECT username, password FROM users WHERE username = "+req.body.username+";"
db.all(query, function (err, data) {
if (err) {
console.log(err);
} else if (req.body.password === data.password) {
//set cookie with user info
req.session.user = data;
res.redirect('/users/'+data.username);
} else {
console.log(data)
console.log('password not correct');
res.redirect('/cbt');
}
})
});
不要将数据连接到查询字符串中;这是安全漏洞的严重来源!
使用查询参数;在任何你想将数据传递到查询中的地方,放置一个 ?
,并将其作为附加参数传递给 run
:
db.run("SELECT username, password FROM users WHERE username = ?",
username,
function(err, data) {...});