Php 验证mysql列数据并在该行中查找匹配的电子邮件?

Php 验证mysql列数据并在该行中查找匹配的电子邮件?,php,mysql,Php,Mysql,您好,我想知道是否有人可以帮助我,我基本上有一个登记表,用户可以注册,每次注册都会生成一个唯一的验证码到数据库,并在用户注册时通过电子邮件发送给用户 我现在正在进行第二阶段的工作,用户点击他们电子邮件中的链接,然后进入verification.php 在该页面上,用户必须输入他们在电子邮件中发送的验证码/注册码。我这里的脚本应该查找验证代码,并确保它与数据库中的代码匹配 我想做的是告诉我的查询,如果验证码/注册码与我们在数据库中持有的验证码/注册码是正确的,则向我们持有的与该验证码匹配的用户的电

您好,我想知道是否有人可以帮助我,我基本上有一个登记表,用户可以注册,每次注册都会生成一个唯一的验证码到数据库,并在用户注册时通过电子邮件发送给用户

我现在正在进行第二阶段的工作,用户点击他们电子邮件中的链接,然后进入verification.php

在该页面上,用户必须输入他们在电子邮件中发送的验证码/注册码。我这里的脚本应该查找验证代码,并确保它与数据库中的代码匹配

我想做的是告诉我的查询,如果验证码/注册码与我们在数据库中持有的验证码/注册码是正确的,则向我们持有的与该验证码匹配的用户的电子邮件地址发送确认电子邮件。(因此,属于该行且具有相同验证码的电子邮件。)

我的桌子是这样的

id           email               registration_code (verification code)
1      example@email.com                    5093dkfd
目前,我的查询搜索数据库中的注册码,但我不知道如何让它找到该注册码的匹配电子邮件并发送电子邮件。这一点我需要帮助。谁能给我指一下正确的方向吗

此外,我还希望查询告诉用户他们是否正确输入了代码,并且正如它当前告诉用户的那样,即使他们没有正确输入代码,他们也已经正确输入了代码

然后我们发送确认电子邮件:

/*
         * Email out the infromation
         */


    (EMAIL BODY)
    YOUR code was matched and you are now registered etc.

像这样的方法应该会奏效:

$sql = "SELECT email FROM ptb_registrations WHERE registration_code = '$verificationcode'";
$result = mysql_query($sql)or die('Could not find member: ' . mysql_error());
if (mysql_num_rows($result) == 0) {
   header('Location: verification.php?err=2');
} else {
  $row = mysql_fetch_array($result);
  $email = $row['email'];
}

首先,您应该知道mysql_*函数已经被弃用,您应该使用其他mysql库之一,例如mysqli或PDO(支持多种SQL风格)

其次,您应该为您选择的mysql库使用适当的转义函数

要选择匹配的电子邮件,请使用
select email FROM…


要检查结果,可以从num_rows函数(例如mysql库中的
mysql_num_rows
或mysqli中的
num_rows
属性)开始,查看它是否找到匹配的电子邮件地址,然后如果找到匹配项,则获取实际的行内容以获取电子邮件。然后使用PHP向该地址发送电子邮件。

您知道注册码是唯一的还是可能有重复的注册码吗?注册码是唯一的。谢谢,但我应该在电子邮件标题中输入什么内容才能发送到该地址$headersconfirm=“收件人:$email\r\n”;我已经更新了答案,将电子邮件放入$email变量中再问一个简单的问题,如果我在其中输入了一个不存在的注册码,它仍然会发出确认消息,但我希望它说的是错误的代码或其他什么。有什么想法吗?如果没有看到PHP代码的其余部分,很难回答这个问题,错误条件应该与旧代码完全相同,即$result中没有行
$sql = "SELECT email FROM ptb_registrations WHERE registration_code = '$verificationcode'";
$result = mysql_query($sql)or die('Could not find member: ' . mysql_error());
if (mysql_num_rows($result) == 0) {
   header('Location: verification.php?err=2');
} else {
  $row = mysql_fetch_array($result);
  $email = $row['email'];
}