奇怪的是“mysql_num_rows()期望参数1是资源”错误

时间:2013-03-24 18:30:53

标签: php html mysql

我正在关注这里的教程系列:https://www.youtube.com/watch?feature=player_embedded&v=bribF8a3fgo我正在使用下面的代码,是的,我知道有更好的方法可以做到这一点。虽然我收到了这个错误:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in   /Applications/XAMPP/xamppfiles/htdocs/friends/login.php on line 26

我不知道为什么,我很确定我正在打字,但我不确定。介意看看?感谢。

<html>
<head>
<title>Login - Friend System</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
    <?php include 'connect.php'; ?>

<?php include 'functions.php'; ?>

<?php include 'header.php'; ?>

<div class="container">
<h3>Login</h3>
<form method="post">
<?php
    if (isset($_POST['submit'])) {
        $username = $_POST['username'];
        $password = $_POST['password'];

        if (empty($username) or empty($password)) {
            $message = "Fields Empty, Please Recheck";
        }else {
            $check_login = mysql_query("SELECT id FROM users WHERE username='$username' AND password='" . md5($password) . "'");     


            if(mysql_num_rows($check_login) == 1) {
                $message = "Ok!";
            } else {
                $message = "Username and/or password incorrect!";
            }
        }

        echo "<div class='box'>" . $message . "</div>";
    }
?>
    Username: <br/>
    <input type="text" name="username" autocomplete="off"/>
    <br/><br/>

    Password: <br/>
    <input type="password" name="password" />
    <br/><br/>

    <input type="submit" name="submit" value="Register">
</form>
</div>

</body>
</html>

第26行是:

if(mysql_num_rows($check_login) == 1) {

2 个答案:

答案 0 :(得分:2)

如果查询失败,它将返回布尔值FALSE而不是结果集资源。

您应该始终检查返回值是否表示错误,然后以有意义的方式处理错误,例如通过记录错误消息。例如:

if ($check_login === false) {
    die("Error in query: ".mysql_error());
}

if (mysql_num_rows($check_login) == 1) { ...

顺便说一下,这个旧的mysql API is deprecated and should not be used in new PHP code。建议改为使用PDOmysqli

答案 1 :(得分:0)

$ check_login的上下文不是有效查询。 “SELECT”是正确的术语。只要查询无效,它就会返回该错误。

$check_login = mysql_query("SELECT id FROM users WHERE username='$username' AND password='" . md5($password) . "'");