这是一个名称检查,与我的数据库中的用户检查用户名时,预期结果为1。
不幸的是,我得到一个空响应(所以回显错误5)。请,如果有人看到PHP的问题,我非常感谢
代码
$username = $_POST["name"];
$password = $_POST["password"];
$namecheckquery = "SELECT username FROM users WHERE username = ' " . $username . " ' ";
$namecheck = mysqli_query($con, $namecheckquery) or die("2: name check query failed"); // error code #2 = name check query failed
if(mysqli_num_rows ($nameCheck) !=1)
{
echo "5: Either no user with name, more than one."; //error code number 5 number names does not match one
exit();
}
答案 0 :(得分:0)
如果您打印查询,您会注意到$ username周围有空格,除非您将用户名插入这些空格,否则您不会得到结果。
当您输入John作为用户名时查询字符串错误:
SELECT username FROM users WHERE username = ' John '
// Wrong spaces ^ ^
删除双引号和单引号之间的空格:
$namecheckquery = "SELECT username FROM users WHERE username = '" . $username . "'";
更好的是,删除空格并避免串联:
$namecheckquery = "SELECT username FROM users WHERE username = '$username'";
当双引号之间包含一个字符串时,PHP将用相应的值替换变量。
最后,查询未返回null,函数mysqli_num_rows($ nameCheck)返回0,因为未找到匹配项。