我正在尝试登录和注册功能。
当我尝试登录时,如果我输入了错误的ID,我想显示错误日志。 但这不起作用。
否则if(row.id ==''){ alert(“错误的ID”); }
如果我输入了错误的ID,则该查询将无法正常工作。
如何捕获错误并显示在日志上?
function loginConfirm2() {
var id = $('#id').val();
var s_id = "'" + id + "'";
var pw = $('#password').val();
var pw = '' + pw;
var d_id = '';
var d_pw = '';
if (id) {
db = new sqlite3.Database('mydb.db');
db.each("SELECT id, pw FROM user where id=" + s_id, function(err, row) {
d_id = row.id;
d_pw = row.pw;
if ((id == row.id) && (pw == row.pw)) {
window.location.href = "distribute_download.html?id=" + id;
}
else if(row.id==''){
alert("wrong id");
}
else if(!(pw == row.pw)){
alert("wrong pw");
}
else if(row.id==''){
alert("wrong id");
}
else if(row.pw=='undefined'){
alert("wrong pw");
};
if(err){
console.log(err);
}
});
db.close();
}
}
function insultMember2() {
var id = $('#id').val();
var pw = $('#password').val();
db = new sqlite3.Database('mydb.db');
db.run("INSERT into user(id,pw) VALUES(?,?)", [id, pw], function(err, row) {});
db.close();
window.location.href = "finishedJoin.html";
};
db
这就是我制作数据库的方式。 另一个问题是这种改变显示几次 我猜是因为在我的数据库中有一些相同的数据?
否则if(!(pw == row.pw)){ 警报(“ pw错误”); }
var db = new sqlite3.Database('mydb.db');
db.serialize(function() {
db.run("CREATE TABLE if not exists user (id STRING, pw STRING)");
db.each("SELECT id, pw FROM user", function(err, row) {
console.log(row.id + ": " + row.pw);
});
db.each("SELECT id, pw FROM user where id='qwe'", function(err, row) {
console.log("db에 저장된 id는" + row.id);
});
});
db.close();
答案 0 :(得分:1)
在each()方法中,如果结果集为空,则永远不会调用该回调。 所以不要使用each(),而是使用get,因为“ id”将是一个
var sql = "SELECT id, pw FROM user where id=?";
db.get( sql, [s_id], (err, row) => {
if (err) {
return console.error(err.message);
} else {
if(row){
d_id = row.id;
d_pw = row.pw;
if ((id == row.id) && (pw == row.pw)) {
window.location.href = "distribute_download.html?id=" + id;
}
else if(row.id == ''){
alert("wrong id");
}
else if(!(pw == row.pw) || row.pw == 'undefined' || row.pw == undefined){
alert("wrong pw");
}
} else {
alert("Wrong ID");
}
}
});
`
希望有帮助!