mysqli_num_rows()错误没有返回字符串

时间:2014-09-23 14:09:04

标签: php mysql mysqli

我有这段代码:

$con=mysqli_connect("example","example","example","example");
function check_input($value)
{
    global $con;
    // Stripslashes
    if (get_magic_quotes_gpc())
    {
        $value = stripslashes($value);
    }
    // Quote if not a number
    if (!is_numeric($value))
    {
        $value = "'" . mysqli_real_escape_string($con, $value) . "'";
    }
    return $value;
}
$checklogin = mysqli_query($con, "SELECT username, password FROM users WHERE username LIKE '".check_input($_POST['username'])."';");
if(mysqli_num_rows($checklogin) == 0)
{
    echo "Username doesn't exist";
}

我收到了这个错误:

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /home/u436120092/public_html/login.php on line 26 Username doesn't exist

我知道用户名不存在,但不是问题,我已经过测试,问题是mysqli_real_escape_string没有返回字符串。

是的,有人能帮帮我吗? 提前谢谢。

2 个答案:

答案 0 :(得分:3)

您的查询呈现如下:

FROM users WHERE username LIKE ''blarg'';

由于:

$value = "'" . mysqli_real_escape_string($con, $value) . "'";

LIKE '".check_input($_POST['username'])."';

格式错误的查询返回false boolean => mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given

附加说明:

使用准备好的陈述!!

(对不起Mark,你先得到了;我没有看过这些评论。)

答案 1 :(得分:0)

可能是您的查询没有从db获取数据。 请按照以下步骤操作:

1)首先回显您的查询并直接运行到mysql并确认其获取数据。 2)如果查询工作文件,则使用' mysqli_num_rows($ result)'函数来获取没有收集的行数。