这是我的代码。但是,它无法正常工作,一旦我使用用户名和密码登录显示错误信息,如下所示:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\lumbiniinternational_hotel\administrator\login.php on line 26
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\wamp\www\lumbiniinternational_hotel\administrator\login.php on line 27
我的完整代码是:
if(isset($_POST['submit'])){
$query="SELECT * FROM users WHERE username='".$_POST['username']."' AND password='".$_POST['password']."' AND role='administrator'";
$result=mysql_query($query);
$row=mysql_fetch_array($result,MYSQL_ASSOC);
if(mysql_num_rows($result)>0){
header("Location:index.php");
$_SESSION['username']=$row['username'];
}else
$message=get_word($lang,"Wrong username or password.");
}
?>
答案 0 :(得分:1)
这两个错误都表明您的查询错误 确保正确拼写了字段名称 用'喜欢这个:
括起表名和字段名select `field_name` from `table_name`
更改您的
$result=mysql_query($query);
带
$result=mysql_query($query) or die(mysql_error());
这将显示正确的sql错误
最后作为旁注:
- 停止使用mysql扩展并切换到mysqli_或PDO
- 在将POST数据直接用于查询之前清理它们
答案 1 :(得分:0)
检查查询是否出错,在mysql_query末尾添加or die(mysql_error())
if(isset($_POST['submit'])){
$query="SELECT * FROM users WHERE username='".$_POST['username']."' AND password='".$_POST['password']."' AND role='administrator'";
$result=mysql_query($query) or die(mysql_error());
$row=mysql_fetch_array($result,MYSQL_ASSOC);
if(mysql_num_rows($result)>0){
header("Location:index.php");
$_SESSION['username']=$row['username'];
}else
$message=get_word($lang,"Wrong username or password.");
}
此外,我建议您直接使用mysql_fetch_assoc
而不是mysql_fetch_array
的Mirko