php mysql检查用户名是否存在

时间:2016-08-10 13:43:42

标签: php mysql

我知道也许这篇文章会很快被标记为重复,因为有很多问题已经回答,但我不知道为什么它不适合我(一如既往)这里是代码的这一部分:

$conn->set_charset("utf8");
$query = mysqli_query($conn, "SELECT * FROM User WHERE Username='".$username."'");
if(mysqli_num_rows($query) > 0){

echo "exists";
}else{
if (!mysqli_query($conn,$query))
{
    echo "free";
}
}
}

问题:我总是得到"免费"

感谢

-Nick

3 个答案:

答案 0 :(得分:1)

尝试获取值,然后在查询结果上使用php count()函数。如果count大于0则采用其他自由

答案 1 :(得分:-1)

如果您只想检查用户名是否可用,为什么在此查询中使用密码?您是否还转储了$ numrows var以查看它包含哪些数据?

我会使用像

这样的东西
SELECT id FROM users WHERE username='username' LIMIT 1

您想知道用户名是否可用,请停止查找您找到1(LIMIT 1)。如果我请你找我1勺, 正如许多人的建议,停止使用已弃用的mysql_ *函数。尝试阅读https://phpdelusions.net/pdo上的教程(可以通过Google找到更多内容)

使用PDO时,我认为您可以使用以下代码。请原谅我,如果它包含错误,那我已经很久了,因为我直接就是PDO:

<?php

$checkUser = $pdoConnection->prepare("SELECT id FROM users WHERE username = ? LIMIT 1");
$checkUser->execute([$username]);

if ( $checkUser->rowCount() == 1 )
{
    return 'Username exists';
}

# Username is available, so continue with the rest of your code

根据经验,我的小小提示,与您的问题无关;永远不要在数据库中使用大写字母。这可能会导致不必要的问题。

答案 2 :(得分:-2)

您的用户名和密码都在引号中,因此它按字面意思显示。

试试这个:

$query = mysql_query("SELECT * FROM User WHERE Username='" . $usernameG . "' and Password='" . $passwordG ."'");//quotes