簡體   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