且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

提交表单时,如何检查用户的电子邮件是否不在我的数据库中?

更新时间:2023-01-31 16:10:11

一种选择是使用INSERT INTO ... SELECT在实际插入之前检查电子邮件是否存在:

INSERT INTO Govt_profiles  (First_Name, Last_Name, Email)
SELECT ?, ?, ?
WHERE NOT EXISTS (SELECT 1 FROM Govt_profiles WHERE Email = ?);

然后您可以检查受影响的行数,如果为零,则您将知道出了问题。

如果可以更改数据库结构,还可以尝试在Email列中添加唯一索引:

ALTER TABLE Govt_profiles ADD CONSTRAINT email_unique UNIQUE (Email);

使用此方法,尝试使用已存在的电子邮件插入记录将导致Node.js代码出错。

更新到您最近的编辑:

您需要绑定电子邮件两次,因为它在两个?占位符中出现了两次:

var sql = `INSERT INTO Govt_profiles (First_Name, Last_Name, Email) 
    SELECT ?, ?, ? 
    WHERE NOT EXISTS (SELECT 1 FROM Govt_profiles WHERE Email = ?)`;

pool.query(sql, [first_name, last_name, email, email], (err, data) => {
    if (err) throw err;
    console.log("User submition success!");
});