为什么Query正在运行但没有显示或注册结果?

时间:2013-05-12 18:50:11

标签: php mysqli

我的登录页面有一个MySQLi查询,它应该检查用户名和密码,非常简单。这是查询:

$stmt = $mysqli->prepare("SELECT username, pass FROM users WHERE username=? and pass=?");
$stmt->bind_param('ss', $username, $password);
$stmt->execute() or die($stmt->error);
$stmt->bind_result($username, $password);

/*
*   Set $_SESSION variables...
*/
if ($stmt->fetch()) { 

    $_SESSION['logged_in'] = 1;
    $_SESSION['id'] = $username;    
    echo 'Works';               
} 

我的问题在这里,查询不会执行,但会回显“Works”。我的表名是具有行用户名和密码的用户。有谁知道我做错了什么?

编辑:我怀疑查询不会执行,因为当我输入错误的PW时,它也会回显“Works”。

3 个答案:

答案 0 :(得分:0)

使用num_rows

进行尝试
if ($stmt->num_rows > 0) {
    $stmt->fetch();
    $_SESSION['logged_in'] = 1;
    $_SESSION['id'] = $username;    
    echo 'Work';                
}
else {
    echo 'Not work!';
}

答案 1 :(得分:0)

我怀疑你运行的真实代码中的 你正在调用fetch()两次。
或者那种类似错字的错误。

如果没有提取数据,您在此处发布的代码将永远不会回显“工作”(甚至“工作”)。

答案 2 :(得分:0)

我在代码中看不到'Works'(以复数形式工作)。有一个代码在其他地方生成输出“Works”。该错误不在您在此处提供的代码中。

您是否尝试过while子句而非'if'这样?

while ($stmt->fetch()) { 

    $_SESSION['logged_in'] = 1;
    $_SESSION['id'] = $username;    
    echo 'Work';
    exit;               
} 
echo 'Not Work'