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