我的PHP用户名行没有检查我的数据库中是否已存在用户名

时间:2017-10-11 09:53:50

标签: php database phpmyadmin

我使用这行代码来检查我的数据库中是否已存在用户名,如果用户不存在则创建它 - 如果它TryParse

echo 'username already exist'

3 个答案:

答案 0 :(得分:0)

使用sql查询时,您不会得到true或false。使用此行,您将获得0或1行数据。您必须保存查询的响应,然后您可以访问返回的行数。检查此数字是否为0 =>用户名不在数据库中。

答案 1 :(得分:0)

我不太清楚你想要的东西,如果你想检查用户是否已经存在,只需将SELECT username更改为SELECT 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';
}

答案 2 :(得分: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";
    }
}