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;
}
}
?>