如何检查用户名是否已注册

时间:2015-04-24 07:44:07

标签: php if-statement

我的else if无效。你能告诉我我犯了什么错误并解释它是如何工作的吗?谢谢!

这是我的PHP代码。

<?php
    include_once('config.php');

    if(isset($_POST['username'])){
        $username = $_POST['username'];
        $first_name = $_POST['first_name'];
        $last_name = $_POST['last_name'];
        $email = $_POST['email'];
        $phone = $_POST['phone'];
        $password = $_POST['password'];

        if(strlen($password)<6){
            exit ('Password must contain 6 symbols');
        }

        $password = md5($password);
        $query ="INSERT INTO register(username,first_name,last_name,email,phone,password) VALUES ('$username', '$first_name', '$last_name', '$email', '$phone', '$password')"
        or die(mysqli_error($connect));

        if($result=mysqli_query($connect,$query)) {
            echo '<h3><font color="red">You have successfully registered</font></h3>';
        }else if (mysqli_num_rows($result)==0) {
            exit("Username already exists");
        }
    } 

?>

2 个答案:

答案 0 :(得分:2)

mysqli_num_rows()只能与SELECT个查询一起使用,它会返回结果集中的行数。

要测试修改查询影响的行数,请使用mysqli_affected_rows()。对此的论证应该是$connect,而不是$result(这只是一个布尔值)。

$result = mysqli_query($connect, $query);
if (!$result) {
    die (mysqli_error($connect));
} elseif (mysqli_affected_rows($connect) == 0) {
    exit ("Username already exists");
} else {
    echo '<h3><font color="red">You have successfully registered</font></h3>';
}

答案 1 :(得分:1)

试试这个:

$result=mysqli_query($connect,$query);
if($result) {
    echo '<h3><font color="red">You have successfully registered</font></h3>';
}else {
    exit("Username already exists");
}

因此,您使用第一条指令运行查询,然后将查询结果分配给$ result。接下来,检查$ result exitsts。如果是,则表示已插入用户。如果不是,则复制用户。您不需要向else添加if语句来执行此检查。