Моя страница регистрации не проверяет базу данных, чтобы узнать, было ли введено имя пользователя - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь сделать запрос, который проверял бы, было ли введено имя пользователя, но он только сохраняет данные формы в базе данных, даже если имя пользователя уже существует

<?php  

$db= new mysqli('localhost', 'root', '', 'mytrackz');


$query= "SELECT * FROM users ";
$result2= mysqli_query($db, $query);
$user= mysqli_fetch_assoc($result2);




if (isset($_POST['regbutton']))
  {
    $username= $_POST['username'];
    $email= $_POST['email'];
    $password= $_POST['password'];

    $sql= "INSERT INTO users (username, email, password) VALUES ('$username', '$email', '$password')";

    $result= mysqli_query($db, $sql);

    if ($user) {
    if ($user == $username){
        echo "Username already exists";
    }elseif($result){
        echo "Registeration Successful";
    }else{
        echo "Registeration unsuccessful";
    }
}
}

?>

1 Ответ

0 голосов
/ 28 апреля 2020

1: когда вы делаете '$ query = "SELECT * FROM users" ", вы получаете все записи в вашей таблице без какого-либо фильтра по пользователю.

2: лучше проверить сообщение в 'if (isset ($ _ POST [' regbutton ']))' вы вставляете значение без проверки в базу данных.

3: 'if ($ user == $ username) {echo "Имя пользователя уже существует"; ' Вы проверяете одно значение на массив объектов из базы данных;

Чтобы исправить это:

<?php  
$db= new mysqli('localhost', 'root', '', 'mytrackz');
if (isset($_POST['regbutton']))
  {
    $username= $_POST['username'];
    $email= $_POST['email'];
    $password= $_POST['password'];

    $query= "SELECT * FROM users WHERE username = '$username'";
    $result2= mysqli_query($db, $query);
    $user= mysqli_fetch_assoc($result2);

    if ($user['username'] == $username){
        echo "Username already exists";
    }else{
        $sql= "INSERT INTO users (username, email, password) VALUES ('$username','$email', '$password')";
    $result= mysqli_query($db, $sql);

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...