2014-09-21 5 views
0

내 웹 사이트에 대한 로그인 시스템을 생성하고 있습니다. 내 mysqli_query가 비어있는 문제를 가지고 :mysqli_query는 빈 값을 제공합니다.

코드 : $r = mysqli_query($dbc, $q); returns empty.

나는 문제가 내가 그것을 통과하는 SQL 언어로 생각 : 나는 위의 SQL을 실행하면

$q = "SELECT userid, fname, lname FROM User WHERE email='$e' AND pass=SHA1('$p')"; 

을 데이터가 실제로 양식에서 가져 오는 인스턴트 메신저 그때 내가 찾고 결과를 얻을 것이다. 그래서 나는 그것의 PHP와 SQL을 결합 오류가있어 생각합니다.

if(empty($errors)){ 
    $q = "SELECT userid, fname, lname FROM User WHERE email='$e' AND pass=SHA1('$p')"; 

    $r = mysqli_query($dbc, $q); 
    //Check for right data 
    $errors[] = $e; 
    $errors[] = $p; 
    //Check if connection is up 
    if($dbc != null){ 
     $errors[] = "Connection up"; 
    } 
    //Check query 
    if(is_null($r)){ 
     $errors[] = "Query is null"; 
    } 
    //Check query for being empty 
    if(empty($r)){ 
     $errors[] = "Its empty"; 
    } 
    if(mysqli_num_rows($r) == 1){ 
     $row = mysqli_fetch_array($r, MYSQLI_ASSOC); 
     return array(true, $row); 
    }else{ 
     $errors[] = "Email address and password not found."; 
    } 
    return array(false, $errors); 

} 
+0

쿼리가 오류의 결과로, 단순히 어떤 결과를 찾지 못하는가요 시도 할 수 있습니다? 후자의 경우 수행중인 실제 런타임 쿼리는 무엇이며 데이터베이스의 결과와 일치합니까? 데이터베이스에 대해 동일한 쿼리를 수동으로 수행하면 결과가 달라 집니까? – David

+0

그것은 $ r이 비어 있다고 if (empty ($ r)) {$ error [] = "빈 상태";}를 호출 할 때 비어 있습니다. 내가 SQL 문을 가져 와서 데이터베이스에서 실행하면 원하는 결과를 얻습니다. – McBoman

+0

"비어 있음"은 오류가 있음을 나타내며 데이터베이스 오류를 확인하십시오. "비어 있음"이 일치하는 결과가 없다는 것을 의미하는 경우 데이터베이스에 대해 수동으로 쿼리를 테스트하고 찾은 것을 확인하십시오. 테이블의 레코드가 WHERE 절의 기준과 일치하지 않으면 결과가 반환되지 않습니다. (참고 : 그 이후의 로고는 깨졌습니다. 결과 수가 많으면 이메일과 비밀번호를 찾을 수 없다는 것을 의미하지는 않습니다 ...) – David

답변

1

if(empty($errors)){ 
    $p = sha1($p); 
    $q = "SELECT userid, fname, lname FROM User WHERE email = '$e' AND pass = '$p'"; 

    $r = mysqli_query($dbc, $q); 
    if(!$r){ 
     die(mysqli_error($dbc)); 
    } 

    //Check for right data 
    $errors[] = $e; 
    $errors[] = $p; 
    //Check if connection is up 
    if($dbc != null){ 
     $errors[] = "Connection up"; 
    } 
    //Check query 
    if(is_null($r)){ 
     $errors[] = "Query is null"; 
    } 
    //Check query for being empty 
    if(empty($r)){ 
     $errors[] = "Its empty"; 
    } 
    if(mysqli_num_rows($r) > 0){ 
     $row = mysqli_fetch_assoc($r); 
     return array(true, $row['userid'], $row['fname'], $row['lname']); 
    }else{ 
     $errors[] = "Email address and password not found."; 
    } 
    return array_merge(array(true), $errors); 
} 
+0

그것도 작동하지 않습니다. – McBoman

+0

내가 잘못하고있는 것을 업데이트 한'mysqli_error ($ dbc)'로 검사하십시오! – MH2K9

관련 문제