我正在创建一个登录系统,但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>
答案 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 级别错误。
答案 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