MySQL无效导致正确查询

时间:2015-04-15 14:19:45

标签: php mysql login

我正在创建一个登录系统,但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>

2 个答案:

答案 0 :(得分:0)

bool(false)表示您的查询失败。

如果您的查询正确,则错误位于mysql_query(),其中包含两个参数,如下所示:

mysql_query("your query", $connection) OR die(mysql_error());

其中$connection是您的mysql连接的资源:

$connection = mysql_connect("host", "user", "password");

来自php.net

  

如果未指定链接标识符( $connection ),则假定由mysql_connect()打开的最后一个链接。如果没有找到这样的链接,它将尝试创建一个,就像没有参数调用mysql_connect()一样。如果未找到或建立连接,则会生成 E_WARNING 级别错误。

注意: mysql_*函数已弃用,请改用mysqli_*PDO

答案 1 :(得分:0)

我认为您必须使用fetch(或类似内容)[mysql_fetch_row][1]结果{/ 1}}:

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

您也可以尝试使用此功能查看$result中的内容:

print_r ($result);

var_dump ($result);

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