首页 > 解决方案 > 查询返回 null 并期望 1

问题描述

这是一个名称检查,在我的数据库中检查用户名时期望结果为 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();
}

标签: phpunity3dmysqli

解决方案


如果您打印查询,您会注意到 $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,因为没有找到匹配项。


推荐阅读