2013-08-20 4 views
-1

Im, имеющий эту ошибку mysql_fetch_assoc() ожидает, что параметр 1 будет ресурсом, логическим значением которого является строка 121, когда я пытаюсь войти в систему. вот мой раздел кода для конкретной проблемы. Кто-нибудь знает, почему это происходит с кодом?mysql_fetch_assoc() ожидает, что параметр 1 будет ресурсом, boolean задан в

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"> 
+5

По крайней мере 1 миллион сообщений на StackOverflow справляются с этим вопросом, посмотрите его –

ответ

-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 
} 
0

выполнить запрос с надлежащим ad_id и Ad_Pass, а затем увидеть, если она отображает все результат. Вероятно, результат пуст.

SELECT * FROM admin WHERE Ad_ID = '$uid' AND Ad_Pass = '$pword' 
0

Pls НЕ использовать MySQL, используйте mysqli или PDO

Pls обратитесь к документации, то, что делает mysql_query (возврат), когда есть ошибка? Вероятно, вам будет полезно запустить mysql_error() для более подробной информации.

+0

@RichardA Я могу строго придерживаться словарной орфографии, если вы чувствуете, что это улучшает ответ –

1

Ваш запрос не удался, поэтому mysql_query вернул логическое значение false.

Лучший способ выяснить, что не так, - добавить обработчик ошибок.

$result = mysql_query("SELECT * FROM admin WHERE Ad_ID = '$uid' AND Ad_Pass = '$pword'") or die(mysql_error()); 
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>'; 
} 
} 
?> 

Проверьте этот код. Я не уверен, что он работает или нет. Я думаю, что он отлично работает.

Смежные вопросы