使用 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) 语句)之前,我的数据库正在正确更新。
但是,在添加我尝试的电子邮件检查后,页面完全崩溃了。我的数据库不会使用唯一密码更新,如果电子邮件是重复的,它也不会显示回显消息 "Email already exists in our database"。页面会加载,但只有基本的页眉、页脚和背景 CSS 我已链接到每个页面。
而不是使用
$numOfRows = $database->num_rows($result);
使用
if($result ->num_rows)
{
}
您需要在电子邮件变量两边添加单引号。就像这个“$email”。检查下面的代码。
$query = "SELECT email FROM Users WHERE email = '$email'";
并且您需要编辑条件语句以检查其是否大于或等于 0,或者您可以在条件块中将变量用作布尔值。
我正在尝试,就像在我之前的许多其他人一样,在我的网站上注册帐户期间,使用 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) 语句)之前,我的数据库正在正确更新。
但是,在添加我尝试的电子邮件检查后,页面完全崩溃了。我的数据库不会使用唯一密码更新,如果电子邮件是重复的,它也不会显示回显消息 "Email already exists in our database"。页面会加载,但只有基本的页眉、页脚和背景 CSS 我已链接到每个页面。
而不是使用
$numOfRows = $database->num_rows($result);
使用
if($result ->num_rows)
{
}
您需要在电子邮件变量两边添加单引号。就像这个“$email”。检查下面的代码。
$query = "SELECT email FROM Users WHERE email = '$email'";
并且您需要编辑条件语句以检查其是否大于或等于 0,或者您可以在条件块中将变量用作布尔值。