所以我使用此代码检查数据库中是否存在用户名。
$sql = $db->query("SELECT FROM people (username, password, email) WHERE username=$username");
if(mysql_num_rows($sql)>=1)
{
echo"name already exists";
}
else
{
$sqll = $db->query("INSERT INTO people (username, password, created, ip) VALUES ('{$username}','{$ph}',NOW(),'{$ip}' )") or die("Error creating user");
}
但是当我运行它时,我得到了
(!)警告:mysqli_num_rows()要求参数1为mysqli_result,第17行的/Users/idrisk/Desktop/localhost/r.php中给出布尔值
我不确定自己该做什么。有没有更好的方法来检查用户名是否存在?
答案 0 :(得分:1)
您收到该警告是因为您的mysql查询语法错误(它希望mysqli_result对象作为响应但收到false
的布尔值。)
变化:
"SELECT FROM people (username, password, email) WHERE username=$username"
要:
"SELECT username FROM people WHERE username='$username'"
您不需要选择密码和电子邮件,因为您只是在比较用户名。无缘无故地选择密码和电子邮件只会浪费内存。
答案 1 :(得分:0)
更改此
$sql = $db->query("SELECT FROM people (username, password, email) WHERE username=$username");
到
$sql = $db->query("SELECT username, password, email FROM people WHERE username= '$username' ");
你必须从表中选择列。