Check if username exists PDO

后端 未结 3 427
醉话见心
醉话见心 2020-12-18 10:45

How would I be able to check multiple factors combined instead of checking for each one? So basically I\'m using PDO and I have to make sure that the usernames and emails ar

相关标签:
3条回答
  • 2020-12-18 10:51

    Something like this should work:

    function userExists($db, $user)
    {
        $userQuery = "SELECT * FROM userinfo u WHERE u.user=:user;";
        $stmt = $db->prepare($userQuery);
        $stmt->execute(array(':user' => $user));
        return !!$stmt->fetch(PDO::FETCH_ASSOC);
    }
    
    $user = 'userName';
    $exists = userExists($db, $user);
    if(exists)
    {
         // user exists already.
    }
    else
    {
         // user doesn't exist already, you can savely insert him.
    }
    
    0 讨论(0)
  • 2020-12-18 11:06
     <?php
    //Connections
    try {
        $handler = new PDO('mysql:host=localhost;dbname=s','root', '*');
        $handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $e){
        exit($e->getMessage());
    }
    
    $name = $_POST['name']; 
    $username = $_POST['username']; 
    $email = $_POST['email'];   
    $password = $_POST['password']; 
    $password1 = $_POST['passwordconf'];
    $ip = $_SERVER['REMOTE_ADDR'];
    
    
    //Verifcation 
    if (empty($name) || empty($username) || empty($email) || empty($password) || empty($password1)){
        $error = "Complete all fields";
    }
    
    // Password match
    if ($password != $password1){
        $error = "Passwords don't match";
    }
    
    // Email validation
    
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)){
        $error = "Enter a  valid email";
    }
    
    // Password length
    if (strlen($password) <= 6){
        $error = "Choose a password longer then 6 character";
    }
    
    if(!isset($error)){
    //no error
    $sthandler = $handler->prepare("SELECT username FROM users WHERE username = :name");
    $sthandler->bindParam(':name', $username);
    $sthandler->execute();
    
    if($sthandler->rowCount() > 0){
        echo "exists! cannot insert";
    } else {
        //Securly insert into database
        $sql = 'INSERT INTO userinfo (name ,username, email, password, ip) VALUES (:name,:username,:email,:password,:ip)';    
        $query = $handler->prepare($sql);
    
        $query->execute(array(
    
        ':name' => $name,
        ':username' => $username,
        ':email' => $email,
        ':password' => $password,
        ':ip' => $ip
    
        ));
        }
    }else{
        echo "error occured: ".$error;
        exit();
    }
    
    0 讨论(0)
  • 2020-12-18 11:09

    The code you show has no much sense to check if username and email are unique. You should set UNIQUE KEY on the database.

    0 讨论(0)
提交回复
热议问题