如果用户已经注册,我正在尝试进行电子邮件验证 但是即使数据库中已经存在电子邮件,这些值也总是插入到我的数据库中。
router.get('/save',function(req,res){
var uname = req.query.username;
var em = req.query.email;
var passw = req.query.pass;
var gender = req.query.gender;
var dob = req.query.date;
var con = mysql.createConnection({
host:"localhost",
user:"root",
password:"",
database:"sherrydb"
});
con.query('select * from loginn where email= "'+req.query.email+'" ',function(err,row){
if(err){
con.query('insert into loginn(name, password, email, gender, date) VALUES("' + uname + '","' + passw + '","' + em + '","' + gender + '","' + dob + '")',
function(err,rows,fields){
console.log(rows);
res.send("inserted");
});
}
else{
alert("user already registered");
return;
}
});
con.end();
});
答案 0 :(得分:1)
只有在出现错误并且两种情况下数据库查询都不会引发任何错误的情况下插入,如果找不到任何结果或找到任何结果。
这些数据库查询的结果将是什么-
因此,您可以做的是,检查查询结果的长度,如果结果长度为0,则可以插入,并且大于0。您应该发送“已注册”响应或类似内容。
答案 1 :(得分:0)
router.get('/save',function(req,res){
var uname = req.query.username;
var em = req.query.email;
var passw = req.query.pass;
var gender = req.query.gender;
var dob = req.query.date;
var con = mysql.createConnection({
host:"localhost",
user:"root",
password:"",
database:"sherrydb"
});
con.query('select * from loginn where email="'+em+'" ', (err, result) => {
if (err) throw err;
if (result.length>0){
res.send("user already registered");
}
else{
var conn = mysql.createConnection({
host:"localhost",
user:"root",
password:"",
database:"sherrydb"
});
conn.query('insert into loginn(name, password, email, gender, date) VALUES("' + uname + '","' + passw + '","' + em + '","' + gender + '","' + dob + '")',function(err,rows,fields){
console.log(rows);
res.send("inserted");
});
conn.end();
}
});
con.end();
});
答案 2 :(得分:-1)
EDIT :第Debug
行。仅在出现错误时才插入记录。检查您的选择查询是否存在错误。另外,我建议您阅读有关回调及其工作方式以及node.js回调样式库的一些知识。
这样做之后:回调中的行变量表示在数据库中找到的记录。如果存在这样的行,则表示该用户已经注册。将您的代码更新为以下内容:
if(err)
此外,您的代码有很多错误。 请勿使用get方法进行用户身份验证和注册,这是在公开用户凭据。