-3

所以我想在创建新帐户时检查电子邮件是否已经在数据库中,但我不知道如何使它工作,因为我是 php 的初学者

 <?php         

    if (isset($_POST["register"])) 
{

 include 'header.php';

$firstName = $connection->real_escape_string($_POST["firstName"]);          
$email = $connection->real_escape_string($_POST["email"]);  
$password = sha1($connection->real_escape_string($_POST["password"])); 

 $sql = "SELECT * FROM users WHERE email LIKE '%$email%'";
 $result = mysqli_query($conn, $sql);
 $queryResult = mysqli_num_rows($result);

 if($queryResult >0)
      echo"Email already exists";

else 
{
            $connection = new mysqli('mysql.hostinger.com', 'xxx', 'xxx', 'xxx');



        $data = $connection->query("INSERT INTO users (username, email, password) VALUES ('$firstName', '$email', '$password')");

        if ($data === false)
            echo "Eroare!";
        else
         header( 'Location:http://alergii-help.tk/account/login.php');
    }}                 
?> 



  <input type="submit"   class="login100-form-btn"   name="register" value="Inregistrare" required />   

我不知道什么不起作用

该表称为“文章”

4

3 回答 3

0

尝试:

<?php         
if (isset($_POST["register"])) {

    include 'header.php';
    $connection = new mysqli('xxxx', 'xxx', 'xxx', 'xxxx');
    $firstName = $connection->real_escape_string($_POST["firstName"]);          
    $email = strtolower($connection->real_escape_string($_POST["email"]));  
    $password = sha1($connection->real_escape_string($_POST["password"])); 
    $sql = "SELECT * FROM users WHERE LOWER(email) = '$email';";
    $result = mysqli_query($conn, $sql);
    $queryResult = mysqli_num_rows($result);

    if($queryResult >0)
        echo"Email already exists";
    } else {
            $data = $connection->query("INSERT INTO users (username, email, password) VALUES ('$firstName', '$email', '$password')");
            if ($data === false) {
                echo "Eroare!";
            } else {
                header( 'Location:http://alergii-help.tk/account/login.php');
            }
    }
}                 
?>
于 2018-06-17T10:15:47.507 回答
0

您需要先建立连接,然后在语句之前传递它:

$result = mysqli_query($conn, $sql)

如下所示:

$conn = new mysqli('mysql.hostinger.com', 'u784726611_teze', 'b567c63b567c63', 'u784726611_teze');

$result = mysqli_query($conn, $sql);
于 2018-06-17T10:19:31.733 回答
0

为什么不使用以下查询在表中为电子邮件添加唯一约束?

ALTER TABLE USERS ADD CONSTRAINT UNQ_EML UNIQUE (EMAIL)

如果你的代码试图插入一个已经存在的邮件,那么 MySQL 在插入的时候会抛出这样的重复数据异常,你可以很容易地捕捉到它并识别它。下面是要检查的伪代码。

if( mysql_errno() == 1062) {
    // Duplicate key
} else {
    // Non duplicate
}

https://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html

于 2018-06-17T10:35:55.917 回答