2012-01-21 2 views
-1

스크립트를 실행하려고 할 때마다 mysql_num_rows(): supplied argument is not a valid MySQL result resource.이라는 오류가 발생합니다. 이유는 확실하지 않습니다. 내 목표는 로그인 한 클라이언트가 관리자인지 확인하는 것입니다.mysql_num_rows() : 제공된 인자가 유효한 MySQL 결과 리소스가 아닙니다.

<?php 
    session_start(); 
    $username = $_POST['username']; 
    $password = $_POST['password']; 

    if ($username&&$password) 
    { 

    $user = $_SESSION['user']; 
    //connect 
    $connect = mysql_connect("localhost","*******_robert","***********") or die ("Couldn't Connect"); //host,username,password 
    mysql_select_db("virtua15_gateway") or die ("Could not find database"); 
    //query 
    $get = mysql_query("SELECT * FROM Users WHERE username='$user'"); 
    $numrows = mysql_num_rows($query); 
    if ($numrows!=0) 
    { 
     while ($row = mysql_fetch_assoc($query)) 
     { 
       $dbusername = $row['username']; 
       $dbpassword = $row['password']; 
     } 
     if ($username==$dbusername&&$password==$dbpassword) 
     { 
     header('Location: index2.php'); 
     $_SESSION['username']=$dbusername; 
     } 
     else 
      echo "incorrect username and password"; 
    } 
     else 
     die ("This user does not exist"); 

    } 
    else 
     die("Please enter a username and a password"); 


    while($get = mysql_fetch_assoc($get)) 

{ 
$admin = $row['admin']; 
} 
if ($admin==0) 
die ("You are not and admin!"); 
header('Location: index2.php') 

?> 
+2

를 얻을 나는 이미 이런 종류의 질문을 본 적이 확신 해요 ... [힌트 : 오른쪽에있는 "관련"탭 아래의 질문 확인 ---->] –

+0

가능한 중복 [mysql_num_rows() : 제공된 인수가 val이 아닙니다. ID MySQL 결과 리소스] (http://stackoverflow.com/questions/3698740/mysql-num-rows-supplied-argument-is-not-a-valid-mysql-result-resource) – DCoder

답변

3
$get = mysql_query("SELECT * FROM Users WHERE username='$user'"); 
$numrows = mysql_num_rows($query); 

그래서, 그것은 $get 또는 $query입니까?

3

쿼리 리소스 $ get을 호출했지만 $ query로 전달합니다. 하나를 선택 :

$query = mysql_query("SELECT * FROM Users WHERE username='$user'"); 
$numrows = mysql_num_rows($query); 

을 또한,

것은 또한 당신이 그것을 공급하는 대신 모든 입력을 탈출 할 필요가 주목할 가치가있을 수 있음 (다이() 또는에서 trigger_error()) 쿼리가 실패 할 경우 오류 검사를 추가 ($ _POST뿐만 아니라 $ _SESSION 또는 $ _COOKIES에서도 가능). 이를 위해서는 mysql_real_escape_string()을 사용하십시오. 암호를 일반 텍스트로 저장하면 안되며 sha1() 이상의 해시 알 고리를 사용할 수 있습니다.

2

사용이 : 대신

$get = mysql_query("SELECT * FROM Users WHERE username='$user'"); 
$numrows = mysql_num_rows($get); 

: $에

$get = mysql_query("SELECT * FROM Users WHERE username='$user'"); 
$numrows = mysql_num_rows($query); 
1
$get = mysql_query("SELECT * FROM Users WHERE username='$user'"); 
$numrows = mysql_num_rows($get); 

변경 $ 쿼리

관련 문제