-1

我有这个错误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">
4

5 回答 5

1

您的查询失败,因此mysql_query返回了一个布尔假值。

找出问题的最佳方法是添加错误处理程序。

$result = mysql_query("SELECT * FROM admin WHERE Ad_ID = '$uid' AND Ad_Pass = '$pword'") or die(mysql_error());
于 2013-08-20T06:13:47.400 回答
0

尝试使用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>';
}
}
?>

请检查此代码。我不确定它是否有效。我认为它会完美运行。

于 2013-08-20T06:33:57.637 回答
0

使用正确的 Ad_ID 和 Ad_Pass 执行查询,然后查看它是否显示任何结果。可能结果为空白。

SELECT * FROM admin WHERE Ad_ID = '$uid' AND Ad_Pass = '$pword'
于 2013-08-20T06:11:40.183 回答
0

请不要使用 mysql,使用mysqliPDO

请查阅文档,mysql_query() 出错时返回什么?您可能会发现运行 mysql_error() 以获取更多详细信息很有用。

于 2013-08-20T06:13:38.557 回答
-1

尝试像这样进行检查。检查是否$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
}
于 2013-08-20T06:10:38.017 回答