所以,我编写了一个函数来检查我的数据库,看看是否已经使用了用户名。
基本上,即使变量$ user不是数据库中的用户名,它总是为行数返回1。
不确定为什么,任何想法?
功能:
function userTaken($user){
require_once('db.php');
$taken = mysqli_query($mysqli, "SELECT * FROM users WHERE username = '$user'");
if (!$taken) {
die(mysqli_error($mysqli));
}
$cnt = mysqli_num_rows($taken);
if($cnt > 0){
return true;
} else {
return false;
}
}
调用功能:
if(userTaken($user)){
echo "<font color='red'>That username is already taken!</font>";
}
答案 0 :(得分:0)
先尝试检查然后再查询
if(isset($user) && $user!='')
{
$taken = mysqli_query($mysqli, "SELECT * FROM users WHERE username = '$user'");
}
答案 1 :(得分:0)
根据我的经验,MySQL可以为row_count
返回一些时髦的值也许
result = $db->query($mysqli, "SELECT COUNT(*) AS cnt FROM users WHERE username = '$user'")
while($row = $result->fetch_assoc()){
echo $row['username'] . '<br />';
}
或尝试
/* Select queries return a resultset */
if ($result = $mysqli->query("SELECT Name FROM City LIMIT 10")) {
printf("Select returned %d rows.\n", $result->num_rows);
/* free result set */
$result->close();
}