繁体   English   中英

使用PHP检查MySQLi数据库中是否存在电子邮件

[英]Checking if email exists in MySQLi database using PHP

我正在尝试像在此之前的其他许多人一样,使用PHP与MySQLi数据库进行交互,以检查在我的网站上进行帐户注册期间数据库中是否已存在电子邮件。 我尝试过使用尽可能多的指南,但仍然没有运气。

以下是我最初编写的用于在注册时将用户的电子邮件插入数据库的代码:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $database = new mysqli("localhost", "user", "dbpw", "dbname");
if($database->connect_error){
            die( "Error connecting:" . $database->connect_error);
        }

$email = $database->real_escape_string(htmlspecialchars($_POST["email"]));
$query = "SELECT email FROM Users WHERE email =$email";
$result = $database->query($query);
$numOfRows = $database->num_rows($result);
if($numOfRows > 0){
  echo "Email already exists in our database.";
}else{
$query = "INSERT INTO Users (email) VALUES ('" . $email . "');
if(!$database->query($query)){echo("<p>Unable to add user for query: " . $query . " <br /> Error: " . $database->errno . " " . $database->error);}}

在插入电子邮件支票(if($ numOfRows)语句)之前,我的数据库已正确更新。

但是,添加我尝试的电子邮件检查后,页面完全损坏。 我的数据库不会使用唯一的密码进行更新,并且如果电子邮件重复,它将不会显示回显的消息“我们的数据库中已经存在电子邮件”。 该页面将被加载,但是只有基本的页眉,页脚和背景CSS我已链接到每个页面。

而不是使用

$numOfRows = $database->num_rows($result);

采用

if($result ->num_rows)
{
}

您需要在email变量周围添加单引号。 像这样的“ $ email”。 检查以下代码。

$query = "SELECT email FROM Users WHERE email = '$email'";

并且您需要编辑条件语句以检查其是否大于或等于0,或者可以在条件块中仅将变量用作布尔值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM