准备好的语句返回0而不是1,为什么?

时间:2014-10-10 11:31:02

标签: php mysql prepared-statement

这种情况下的问题是什么?为什么我得到0而不是1?如果我从phpMyAdmin运行查询它工作正常。

if ($stmt = $mysqli->prepare("SELECT * FROM members WHERE username=? AND password=?")){
        $input['hold'] = md5($input['pass'] . $config['salt']);
        $stmt->bind_param("ss", $input['user'], $input['hold']);
        $stmt->store_result();
        $stmt->execute();

        if ($stmt->num_rows > 0){
            // Set session variables
            $_SESSION['username'] = $input['user'];

            header("Location: members.php"); // Redirect if we have results }

1 个答案:

答案 0 :(得分:0)

我没有解决方案,但有一些意见对评论来说有点大。

您向我们展示的代码将在结果为空时设置会话,或者在行数为零时失败。没有错误检查以查看代码是否按预期执行。

您应该检查错误。还可以尝试使用硬编码的SQL语句运行它,您已使用PHPMyAdmin的mysql命令行客户端对其进行了测试和验证。