Задать вопрос
Ответы пользователя по тегу MySQL
  • Как лучше сделать проверку на занятость логина?

    @Asjacker
    $rs_username = $mysqli->query("SELECT * FROM users WHERE login='$login'")->rowCount();

    проверяем, есть ли такой логин
    если запрос отдал 0, то идет запись в бд
    if($rs_username == 0) {
     $mysqli->query("INSERT INTO `users` (`login`, `password`, `name`)
        VALUES('$login', '$password', '$name')");
    }
    если такой логин уже существует то вылезает ошибка:
    else {
                    echo "<script>alert('Такой логин уже существует!')</script>";
                }


    Вот код полностью :
    if(isset($_POST['login'])) {
    $login = $_POST['login'];
      $name = filter_var(trim($_POST['name']),FILTER_SANITIZE_STRING);
      $password = filter_var(trim($_POST['password']),FILTER_SANITIZE_STRING);
    
    
      if (mb_strlen($login) < 3 || mb_strlen($login) > 91) {
        echo "Логин должен быть от 3 до 91 символов.";
        exit();
      } else if (mb_strlen($name) < 3 || mb_strlen($name) > 99) {
        echo "Имя должно быть от 3 до 99 символов.";
        exit();
      } else if (mb_strlen($password) < 6 || mb_strlen($password) > 99) {
        echo "Пароль должен быть от 6 до 99 символов.";
        exit();
      }
    
      $mysqli = new mysqli('localhost', 'root', '123', 'db');
     $rs_username = $mysqli->query("SELECT * FROM users WHERE login='$login'")->rowCount();
      if($rs_username == 0) {
     $mysqli->query("INSERT INTO `users` (`login`, `password`, `name`)
        VALUES('$login', '$password', '$name')");
    }{
    $mysqli->close();
        header("Location: ".$_SERVER["HTTP_REFERER"]);}
    else {
                    echo "<script>alert('Такой логин уже существует!')</script>";
                }
        }
    Ответ написан
    Комментировать