PHP 检查电子邮件是否已存在于数据库中
PHP Checking if the email already exists in the database
我正在制作一个带有登录系统的网站。当用户想要注册并输入他的电子邮件时,MySQL 数据库中不应该已经存在一个。我正在尝试通过准备好的语句来编写我的代码。
当用户输入数据库中已存在的电子邮件时,我希望它使用 header 函数将用户发送回相同的注册页面,但出现某种错误。我试图将行数存储在一个名为 $resultcheck 的变量中,并检查是否有相同电子邮件的列超过 0(如果它已经存在)。
代码如下:
$query = "SELECT * FROM users WHERE Mail=?;";
$stmt = mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt, $query))
{
header("Location: ../registrering.php?error=sqlerror");
exit();
}
else
{
mysqli_stmt_bind_param($stmt, "s", $mail);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
$resultCheck = mysqli_stmt_num_rows($stmt);
if($resultcheck > 0)
{
header("Location: ../registrering.php?error=emailtaken");
exit();
}
else {...}
然而,当我提交一个在数据库中已经存在电子邮件的帐户时,我成功地在 table 用户中输入了另一列,并且有多个列具有相同的电子邮件。
除了用 SELECT SQL 检查。您应该将 mysql 中的列设置为唯一。参见 https://www.w3schools.com/sql/sql_unique.asp。
您正在分配 $resultCheck
,然后测试另一个名为 $resultcheck
的变量,该变量始终为 0。
所以你的错误是变量命名中的错字。
我正在制作一个带有登录系统的网站。当用户想要注册并输入他的电子邮件时,MySQL 数据库中不应该已经存在一个。我正在尝试通过准备好的语句来编写我的代码。
当用户输入数据库中已存在的电子邮件时,我希望它使用 header 函数将用户发送回相同的注册页面,但出现某种错误。我试图将行数存储在一个名为 $resultcheck 的变量中,并检查是否有相同电子邮件的列超过 0(如果它已经存在)。
代码如下:
$query = "SELECT * FROM users WHERE Mail=?;";
$stmt = mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt, $query))
{
header("Location: ../registrering.php?error=sqlerror");
exit();
}
else
{
mysqli_stmt_bind_param($stmt, "s", $mail);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
$resultCheck = mysqli_stmt_num_rows($stmt);
if($resultcheck > 0)
{
header("Location: ../registrering.php?error=emailtaken");
exit();
}
else {...}
然而,当我提交一个在数据库中已经存在电子邮件的帐户时,我成功地在 table 用户中输入了另一列,并且有多个列具有相同的电子邮件。
除了用 SELECT SQL 检查。您应该将 mysql 中的列设置为唯一。参见 https://www.w3schools.com/sql/sql_unique.asp。
您正在分配 $resultCheck
,然后测试另一个名为 $resultcheck
的变量,该变量始终为 0。
所以你的错误是变量命名中的错字。