2013-11-27 3 views
0

Im пытается создать скрипт входа в систему с php и mysql. все хорошо, за исключением я получаю эту ошибку при попытке войти в систему:PHP Ошибка входа:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/deadmin1/public_html/login/index.php on line 10

соответствующий код является:

<?php 
require("config.php"); 

if(isset($_POST['Submit'])){ 

    $userName=getStr($_POST['userName']); 
    $passWord=md5(getStr($_POST['passWord'])); 

    $query=mysql_query("select userID from tbl_users where userName='$userName' and passWord='$passWord' "); 
    if(mysql_num_rows($query)==1){ 
     //login success 
     $data=mysql_fetch_array($query,1); 
     $_SESSION['userID']=$data['userID']; 
     header("location:dashboard.php"); 

    }else{ 
     //login failed 
     $error="Invalid Login"; 
    } 

} 
+0

Изменить mysql_num_rows ($ запроса) в mysql_num_rows ($ DATABASEVAR) –

+0

Также вы должны подумать об обновлении до mysqli или pdo –

+0

добавить 'или die (mysql_error())' в конце инструкции mysql_query и опубликовать вывод – rakimo

ответ

0

Сообщение об ошибке четко заявляет, что не так с вашим запросом.

mysql_num_rows() expects parameter 1 to be resource, boolean given in ...

Видимо $query является булевой вместо правильного результата MySQL ресурса. Я предполагаю, что он равен === false. Значение: Ваш запрос не так:

For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error. [source]

Попробуйте отладки запроса, проверяя mysql_error() и/или захоронений вара $ запроса

$query=mysql_query(....) or die (mysql_error()); 
or 
var_dump($query); 

Некоторых других замечания:

  • mysql_ * функции устарели: faq
    Не так сложно переписать этот запрос в инструкцию PDO или mysqli_ *

  • И если вы действительно хотите создать систему входа в систему, пожалуйста, изучите другой алгоритм, а затем MD5 (например, SHA256), соление и другие рекомендации по аутентификации пользователей.

0

Пожалуйста, убедитесь, что ваш запрос верен или нет. Если ошибка в вашем запросе, то mysql возвращает false вместо ресурса.

Вы можете добавить дополнительный, если условие перед тем mysql_num_row как:

if($query) { 
    if(mysql_num_rows($query)==1){ 
    //login success 
    $data=mysql_fetch_array($query,1); 
    $_SESSION['userID']=$data['userID']; 
    header("location:dashboard.php"); 

} 

}

попробовать это и наслаждаться