PHP登录脚本结果资源

PHP登录脚本结果资源,php,mysql,database,Php,Mysql,Database,可能重复: 当输入用户名和密码时,我得到了错误 mysql\u num\u rows():提供的参数不是有效的mysql结果资源 这是说我没有选择数据库 我想知道这个错误是什么意思。可能是连接到数据库的问题,还是语法问题。这是用户名和密码的代码 $query = mysql_query("SELECT * FROM Users WHERE username = '$user'"); $numrows = mysql_num_rows($query);

可能重复:

当输入用户名和密码时,我得到了错误

mysql\u num\u rows():提供的参数不是有效的mysql结果资源

这是说我没有选择数据库

我想知道这个错误是什么意思。可能是连接到数据库的问题,还是语法问题。这是用户名和密码的代码

$query = mysql_query("SELECT * FROM Users WHERE username = '$user'");
                $numrows = mysql_num_rows($query);
                if($numrows == 1){
                    $row = mysql_fetch_assoc($query);
                    $dbid = $row['id'];
                    $dbuser = $row['username'];
                    $dbpass = $row['password'];
                    $dbactive = $row['active'];

                    if($password == $dbpass){
                        if($dbactive == 1){

                            //set session info
                            $_SESSION['userid'] = $dbid;
                            $_SESSION['username'] = $dbuser;

                            echo "You have been logged in as <b>$dbuser</b> Click here to go to member page.";

                        }else
                            echo "You must activate your account to login.";

                    }else 
                        echo "You did not enter the correct password.";


                }else 
                    echo "The username you entered was not found.";
            }


        }else
            echo "You must enter your username.";

    }
$query=mysql\u query(“从用户名为“$user”的用户中选择*);
$numrows=mysql\u num\u行($query);
如果($numrows==1){
$row=mysql\u fetch\u assoc($query);
$dbid=$row['id'];
$dbuser=$row['username'];
$dbpass=$row['password'];
$dbactive=$row['active'];
如果($password==$dbpass){
如果($dbactive==1){
//设置会话信息
$\u会话['userid']=$dbid;
$\会话['username']=$dbuser;
echo“您已以$dbuser身份登录,请单击此处转到会员页面。”;
}否则
echo“您必须激活您的帐户才能登录。”;
}否则
echo“您没有输入正确的密码。”;
}否则
echo“未找到您输入的用户名。”;
}
}否则
echo“您必须输入您的用户名。”;
}

问题在$query行中。第一行

与zerkms建议的一样,尝试将mysql_error()打印到屏幕上。 比如:

$query = mysql_query("your_query here");
if(!$query){
    echo 'Error! : ' . mysql_error();
}

在执行所有这些操作之前,请确保已连接到数据库。例如:


最可能的原因是您没有连接或没有选择正确的数据库,您应该使用
mysql\u error()但是我也看到了一些逻辑混乱,这里是一个超级简单登录的示例,应该对数据库查询进行检查,而不是通过PHP进行检查(另外,不需要将密码存储在数据库中以外的任何位置)。您还应该散列用户帐户密码并转义用户输入,希望对您有所帮助

<?php 
session_start();
$db = mysql_connect('host','uesr','pass') or die(mysql_error());
mysql_select_db('database') or die(mysql_error());

if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['username']) && isset($_POST['password'])){

    $username = mysql_real_escape_string($_POST['username']);
    $password = mysql_real_escape_string($_POST['password']);

    $query = mysql_query("SELECT `username`,`active`
                          FROM Users 
                          WHERE username ='$user' && password='$password' && active=1
                          LIMIT 1");

    if(mysql_num_rows($query) == 1){
        //Log in user found
        $row = mysql_fetch_assoc($query);

        $_SESSION['username']  = $row['username'];
        $_SESSION['active']    = $row['active'];
        $_SESSION['logged_in'] =true;
        header('Location: ./members.php');
        die;
    }else{
        //failed login
        $_SESSION['logged_in']=false;
        $_SESSION['log_in_error']='Fail!! Account not active or incorrect login information!';
        header('Location: ./login.php');
        die;
    }
}
?>

var\u dump(“从用户名为“$user”的用户中选择*)+
mysql_error()您的查询失败。执行
$result=mysql\u query(…)或die(mysql\u error())
以找出原因。我按你说的做了,回音说我没有选择数据库。你连接到数据库了吗?是的,在另一个脚本中,它看起来像mysql_connect(“主机名”、“用户名”、“密码”);mysql_选择_数据库(“用户”);然后在我编写的另一个脚本require(connect.php)中,它是一个名为
Users
的数据库?不要把它和表混淆。我尝试了你的代码,但我得到了相同的错误。你的数据库名是什么?不是表,可能将数据库重命名为其他名称,然后再重命名为其中的表。那么你就不会感到困惑了。你使用的是
mysql\u-select\u-db('database')还是die(mysql\u-error())我注意到@Terry Seidler的答案不包括这个。
<?php 
session_start();
$db = mysql_connect('host','uesr','pass') or die(mysql_error());
mysql_select_db('database') or die(mysql_error());

if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['username']) && isset($_POST['password'])){

    $username = mysql_real_escape_string($_POST['username']);
    $password = mysql_real_escape_string($_POST['password']);

    $query = mysql_query("SELECT `username`,`active`
                          FROM Users 
                          WHERE username ='$user' && password='$password' && active=1
                          LIMIT 1");

    if(mysql_num_rows($query) == 1){
        //Log in user found
        $row = mysql_fetch_assoc($query);

        $_SESSION['username']  = $row['username'];
        $_SESSION['active']    = $row['active'];
        $_SESSION['logged_in'] =true;
        header('Location: ./members.php');
        die;
    }else{
        //failed login
        $_SESSION['logged_in']=false;
        $_SESSION['log_in_error']='Fail!! Account not active or incorrect login information!';
        header('Location: ./login.php');
        die;
    }
}
?>