【问题标题】:Checking if email exists in MySQLi database using PHP [duplicate]使用 PHP 检查电子邮件是否存在于 MySQLi 数据库中 [重复]
【发布时间】:2017-08-12 21:49:19
【问题描述】:

我正在尝试,就像这里的许多其他人一样,在我的网站上注册帐户期间,我的数据库中是否已经存在电子邮件,使用 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 我已链接到每个页面。

【问题讨论】:

  • 您在选择查询中有一个错误:$query = "SELECT email FROM Users WHERE email =$email"; 应该是 $query = "SELECT email FROM Users WHERE email ='$email'"; 电子邮件值应该用单引号括起来。它是一个字符串。您在插入中以正确的方式这样做
  • 警告:你对mysql注入持开放态度!使用prepared statements 保护自己免受它的侵害。
  • @Nytrix Roger,感谢您的建议。既然我已经解决了我的主要问题,将考虑更改此文件以使用准备好的语句。

标签: php database email mysqli confirmation


【解决方案1】:

您需要在电子邮件变量周围添加单引号。就像这个'$电子邮件'。检查下面的代码。

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

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

【讨论】:

  • 我对最后一部分感到困惑。如果它等于 0,那么这应该意味着我的数据库中不存在该电子邮件,对吗?在这种情况下,我想继续使用 else 声明。
  • 我不是故意要混淆你的。忽略那个 0 部分。那是我的错!
【解决方案2】:

而不是使用

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

使用

if($result ->num_rows)
{
}

【讨论】:

  • 谢谢。我按照@codvlpr 和@Lelio Faieta 的建议做了你的建议,并让事情顺利进行。 if($result-&gt;num_rows &gt; 0){ ... }
猜你喜欢
  • 1970-01-01
  • 2019-06-29
  • 1970-01-01
  • 2019-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-24
  • 2017-07-26
相关资源
最近更新 更多