我正在创建一个登录系统,但是PHP打印错误并显示无效的MySQL结果。
查询是100%正确,$ _ POST具有有效数据。

 Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ..../public_html/libs/basic.php on line 27


这是PHP:

        if(isset($_POST['password']) && isset($_POST['login']))
        {
            $login = mysql_real_escape_string($_POST['login']);
            $result = mysql_query("SELECT * FROM `users` WHERE `login`='". $login ."' AND `pass`='". createPasswordHash($_POST['login'], $_POST['password']) ."' LIMIT 1");
            if(mysql_num_rows($result) > 0)
            {
                $user_checked = 1;
                $token = md5(uniqid() . "salt" . rand());
                setUserConfig('token', $token);
                setUserConfig('token_time', time() + (60 * 60));
                return true;
            }
        }


createPasswordHash:

function createPasswordHash($login, $pass)
{
    return md5($login . "_". md5($pass));
}


形成:

<form method="POST" action="?p=home">

Login: <input type="text" name="login" placeholder="Wpisz login..." />
Hasło: <input type="password" name="password" placeholder="Wpisz hasło..." />
    <input type="submit" value="Zaloguj" />
</form>

最佳答案

我认为您必须使用fetch(或等效的东西)[mysql_fetch_row][1]您的结果,例如:

...
$result = mysql_fetch_row ( $result );
if(mysql_num_rows($result) > 0) {
    ...
}


您也可以尝试此操作以查看$result中的内容:

print_r ($result);


要么

var_dump ($result);


只是警告,不建议使用mysql。建议使用PDO

关于php - MySQL无效导致正确的查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29652806/

10-12 07:35
查看更多