我出现此错误mysql_fetch_assoc()要求参数1为资源,当我尝试登录系统时,第121行给出布尔值。这是我针对特定问题的代码部分。有人知道为什么代码会出现这种情况吗?
if(isset($_POST["loginbtn"]))
{
$uid = $_POST["userid"];
$pword = $_POST["userpass"];
$result = mysql_query("SELECT * FROM admin WHERE Ad_ID = '$uid' AND Ad_Pass = '$pword'
");
if($row = mysql_fetch_assoc($result))
{
$_SESSION ["loggedin"] = "true" ;
$_SESSION ["adid"] = $row ["Ad_ID"];
$_SESSION ["adname"] = $row ["Ad_Name"];
$_SESSION ["adaright"] = $row ["Ad_ARight"];
if($row ["Ad_ARight"]=='write')
header('Location: HomeScreen.php');
else if($row ["Ad_ARight"]=='read')
header('Location: HomeScreenr.php');
}
else
{
echo '<div class="alert-message error"><p><b> Invalid username or
password </b></p></div>';
}
}
?>
<div align="center">
您的查询失败,因此mysql_query
返回了布尔值false。
找出错误的最好方法是添加一个错误处理程序。
$result = mysql_query("SELECT * FROM admin WHERE Ad_ID = '$uid' AND Ad_Pass = '$pword'") or die(mysql_error());
使用正确的Ad_ID和Ad_Pass执行查询,然后查看它是否显示任何结果。。可能结果是空白的。
SELECT * FROM admin WHERE Ad_ID = '$uid' AND Ad_Pass = '$pword'
请不要使用mysql,使用mysqli或PDO
请参阅文档,当出现错误时,mysql_query()会返回什么?您可能会发现运行mysql_error()以获取更多详细信息非常有用。
尝试使用mysql_num_rows进行检查,否则使用mysql_error()检查查询。
if(isset($_POST["loginbtn"]))
{
$uid = $_POST["userid"];
$pword = $_POST["userpass"];
$result = mysql_query("SELECT * FROM admin WHERE Ad_ID = '$uid' AND Ad_Pass = '$pword'
") die(mysql_error());
$num=mysql_num_rows($result);
if($num)
{
$row = mysql_fetch_assoc($result)
$_SESSION ["loggedin"] = "true" ;
$_SESSION ["adid"] = $row ["Ad_ID"];
$_SESSION ["adname"] = $row ["Ad_Name"];
$_SESSION ["adaright"] = $row ["Ad_ARight"];
if($row ["Ad_ARight"]=='write')
header('Location: HomeScreen.php');
else if($row ["Ad_ARight"]=='read')
header('Location: HomeScreenr.php');
}
else
{
echo '<div class="alert-message error"><p><b> Invalid username or
password </b></p></div>';
}
}
?>
请检查此代码。我不确定它是否有效。我认为它会很好地工作。
试着这样做检查。检查是否设置了$result
并返回值。然后将数组分配给$row
:
if(isset($result))
{
$row = mysql_fetch_assoc($result)
$_SESSION ["loggedin"] = "true" ;
$_SESSION ["adid"] = $row ["Ad_ID"];
$_SESSION ["adname"] = $row ["Ad_Name"];
$_SESSION ["adaright"] = $row ["Ad_ARight"];
if($row ["Ad_ARight"]=='write')
header('Location: HomeScreen.php');
else if($row ["Ad_ARight"]=='read')
header('Location: HomeScreenr.php');
}
您还可以尝试检查它是否返回任何行:
$result = mysql_query("SELECT * FROM admin WHERE Ad_ID = '$uid' AND Ad_Pass = '$pword'");
$num_rows = mysql_num_rows($result);
if($num_rows > 0)
{
$row = mysql_fetch_assoc($result)
//CODE HERE
}