2012-11-21 3 views
0

가능한 중복 :
mysql_fetch_array() expects parameter 1 to be resource, boolean given in select경고 : mysql_result()는 매개 변수 1 C에 주어진 자원 부울 것으로 기대 : XAMPP htdocs를 secondlifestudios 라인에 기능 users.php 포함 4

로그인 시스템을 만들고 있는데 오류가 발생했습니다. 이제 비슷한 제목의 게시물을 잘 알고 있지만 동일한 코드가없는 것 같습니다. 이 오류가 나는 시스템 작업을 얻을 수있는 기회가 없어, 다음과 같은 코드가 users.php에서입니다 고정 될 때까지

는 :

function user_exists($email) { 
    $email = sanitize($email); 
     return(mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `email` = '$email'"), 0) == 1) ? true : false; 
} 

고마워, 난 그냥 다시하여 오류를 해결 코드를 작성합니다. 나는 코멘트에서 모든 것을 시도했다!

+0

도랑 그 펑키 경 thingies – Drew

+1

@DrewPierce : : 생산

, 당신은에 따라, MySQL의 쿼리 로깅을 사용하는 것이 가장 좋습니다있어 당신은 SQL에서 필드 이름을 표시하는 데 사용되는 역 따옴표를 의미? –

+7

[** 새 코드에서 mysql_ * 함수를 사용하지 마십시오. **] (http://bit.ly/phpmsql). 그들은 더 이상 유지 관리되지 않으며 [비추천 프로세스] (http://j.mp/Rj2iVR)가 시작되었습니다. [** 빨간색 상자 **] (http://j.mp/Te9zIL)를 참조하십시오. 대신 [* prepared statements *] (http://j.mp/T9hLWi)에 대해 알아보고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/)를 사용하십시오. mysqli) - [이 기사] (http://j.mp/QEx8IB)는 어떤 결정을 내리는 데 도움이 될 것입니다. PDO를 선택하면 [여기는 좋은 튜토리얼입니다] (http://j.mp/PoWehJ). –

답변

4

mysql_query 오류가 발생하면 FALSE를 반환하고 http://php.net/mysql_query을 참조하고 예제 코드를 살펴보십시오. 정확한 오류를 얻으려면.

// Perform Query 
$result = mysql_query($query); 

// Check result 
// This shows the actual query sent to MySQL, and the error. Useful for debugging. 
if (!$result) { 
    $message = 'Invalid query: ' . mysql_error() . "\n"; 
    $message .= 'Whole query: ' . $query; 
    die($message); 
} 
0

쿼리가 실패합니다. mysql_query()은 오류가 발생한 경우 false을 반환하고 성공한 경우 리소스를 반환합니다. 어쩌면 존재하지 않는 열을 쿼리하려고합니다.

1

검색어에 오류가 있기 때문입니다.

http://ca3.php.net/mysql_query에 따라 오류가 발생하면 쿼리가 false를 반환합니다.

하는 것은 문제가 무엇인지 알아 본을 시도해보십시오

mysql_query($query) or die(mysql_error()); 

너무 많은 기능이 작동를 호출 중첩하지만, 손해 가독성. 이 오류가 생산에서 발생한다 악의적 인 사용자에게 중요한 정보를 멀리 줄 수 있기 때문에, 테스트 후 (mysql_error를()) 부분을 제거하거나 죽게해야

function user_exists($email) { 
    $email = sanitize($email); 

    $result = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `email` = '$email'") or die(mysql_error()); 

    return mysql_result($result, 0) == 1; 
} 

: 같은 것을보십시오. http://dev.mysql.com/doc/refman/5.1/en/query-log.html

+0

mysql_error();를 추가했는데 예기치 않은 "?"이 나타납니다. – Will

+1

인라인 if 문없이 한 행에이 코드를 사용하십시오. 작은 조각들, 한 번에 모두가 아니다. – Selosindis

+1

'return mysql_result ($ result, 0) == 1;':-P –

관련 문제