php检查电子邮件已在数据库表中



嗨,我对这一切都有点陌生,所以请耐心等待。

我正在尝试一个表格,先注册,最后注册,电子邮件到一个表。如果电子邮件已经存在,则id希望转移到某个页面,并更新该电子邮件地址记录中的时间戳。我不知道从哪里开始。提前感谢

编辑:在这里澄清目标是

1.人员A输入他们的详细信息,如果没有他们的电子邮件地址记录,则会创建一个新记录,并加盖时间戳,然后他们进入下一页

  1. 人员B输入他们的详细信息,他们之前已经注册,数据库更新他们的记录时间戳,然后他们进入下一页
// Attempt insert query execution
try{
// Create prepared statement
$sql = "INSERT INTO sessions (first, last, email) VALUES (:first, :last, :email)";
$stmt = $pdo->prepare($sql);
// Bind parameters to statement
$stmt->bindParam(':first', $_REQUEST['first']);
$stmt->bindParam(':last', $_REQUEST['last']);
$stmt->bindParam(':email', $_REQUEST['email']);
// Execute the prepared statement
$stmt->execute();
header('Location: stream.php');
} catch(PDOException $e){
die("ERROR: Could not able to execute $sql. " . $e->getMessage());
}
// Close connection
unset($pdo);

您可以首先将数据库表中的email字段设置为UNIQUE键。

然后,将SQL语句替换为:

INSERT INTO sessions (first, last, email) VALUES (:first, :last, :email)
ON DUPLICATE KEY UPDATE session_timestamp=NOW()

我假设您提到的时间戳字段命名为session_timestamp

当表中不存在电子邮件时,SQL语句会在表中插入一个新的会话行;否则,如果电子邮件已经存在,它会用当前时间更新时间戳字段。您不需要转发到另一个页面进行另一个数据库操作,该操作将:

  1. 使代码难以管理
  2. 废物装载时间

参考文档

使用此代码创建一个函数,并在插入之前调用该函数以检查电子邮件是否已经存在。我相信在注册和更新电子邮件地址时,你需要检查电子邮件是否已经存在,这样你也可以重用它。我认为

你有pdo对象

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
then use
function email_exists($pdo, $email){
$stmt = $pdo->query("SELECT * FROM sessions WHERE email=:email");
$stmt->execute(['email' => $email]); 
if ($stmt->fetch()){
return true;
} else {
return false;
}
}

请仔细阅读文档,它将帮助您完成所有工作。

相关内容

最新更新