2017-10-11 117 views
-2

我用這行代碼來檢查用戶名是否已經存在於我的數據庫中,如果用戶不存在,它會創建它 - 如果有的話echo 'username already exist'我的PHP用戶名行沒有檢查用戶名是否已經存在於我的數據庫中

if(!DB::query('SELECT username FROM users WHERE username=:username', array(':username'=>$username))){ 
    //create user 
    DB::query('INSERT INTO users VALUES (null, :username, :password, :email)', array(':username'=>$username, ':password'=>password_hash($password, PASSWORD_BCRYPT), ':email'=>$email)); 
    echo "SUCCESS!"; 
} else { 
    echo 'USER ALREADY EXIST'; 
} 
+0

你的問題是什麼?你遇到的問題究竟是什麼? – FluffyKitten

回答

0

那麼,如果你不介意的話試試這個吧。

$pWord = password_hash($password, PASSWORD_BCRYPT); 

$chkUname = $dbconnect -> prepare("SELECT username FROM users WHERE username=:username"); 
$chkUname -> bindParam(':username', $username); 
$chkUname -> execute(); 

$rowCoun = $chkUname -> rowCount(); 

if($rowCoun > 0){ 
    echo "USER ALREADY EXIST"; 
}else{ 
    $addUsr = $dbconnect -> prepare("INSERT INTO users VALUES (null, :username, :password, :email)"); 
    $addUsr -> bindParam(':username', $username); 
    $addUsr -> bindParam(':password', $pWord); 
    $addUsr -> bindParam(':email', $email); 

    if($addUsr -> execute();){ 
     echo "SUCCESS!"; 
    }else{ 
     echo "SOMETHING WENT WRONG"; 
    } 
} 
0

對於sql查詢,您不會得到真或假。使用這一行,您將獲得0或1行數據。您必須保存查詢的響應,然後才能訪問返回的行數。檢查這個數字是否爲0 =>用戶名不在數據庫中。

+0

我已經嘗試與:\t \t \t \t如果(爆炸(」」,$查詢)[0] == '選擇'){ \t \t \t \t \t \t \t \t \t $數據= $陳述書>使用fetchall(); \t \t \t \t return $ data; \t \t \t \t} –

0

我不是很清楚自己想要的東西,如果你想查詢的用戶已經存在或不是,只是改變SELECT usernameSELECT COUNT(id)

if (!DB::query('SELECT COUNT(id) FROM users WHERE username=:username', array(':username'=>$username))) { 
    //create user 
    DB::query('INSERT INTO users VALUES (null, :username, :password, :email)', array(':username'=>$username, ':password'=>password_hash($password, PASSWORD_BCRYPT), ':email'=>$email)); 
     echo "SUCCESS!"; 
} else { 
    echo 'USER ALREADY EXIST'; 
} 
相關問題