2012-05-12 3 views
0

나는 다음과 MySQL의 쿼리가 : 나는 쿼리가 성공하지만 어디 확실하지 않다 여부를 확인하기 위해 여기 어딘가에 IF 문을 추가 할뭔가를 수행

$content = mysqli_query($dblink, "SELECT * FROM passwordrecovery WHERE code = '$formcode'"); 

      while($row = mysqli_fetch_array($content)) { 
       $db_username = $row['username']; 
       $db_email = $row['email']; 
       $db_code = $row['code']; 
      } 

합니다.

기본적으로 나는 사용자가 자신의 암호를 검색하기 위해 (이메일로 보낸) 코드를 삽입 할 수있는 양식을 가지고 있습니다. 그러나 실수로 데이터베이스에 존재하지 않는 코드를 입력 할 수 있으며 이러한 상황을 설명하고 오류를 던지고 싶습니다. 나는 그것을하는 방법을 모르겠다?

+0

사용중인 언어에 대한 태그를 추가하십시오 (perl?) – Bohemian

+0

죄송합니다. php. 태그를 추가했습니다. – PartisanEntity

+0

@Truth는 mysqli이지만, 절차 적이긴하지만 OO mysqli는 아닙니다. 준비된 진술에 관한 부분은 –

답변

0

쿼리 실패시 결과 리소스가 아닌 $contentFALSE이됩니다. 거짓이 아닌지 확인하십시오. 존재하지 않는 코드를 입력하면 다시 행을 얻지 않으므로 mysqli_num_rows()을 통해 적어도 하나의 행을 확인하십시오.

$content = mysqli_query($dblink, "SELECT * FROM passwordrecovery WHERE code = '$formcode'"); 

if ($content) { 
    // Check for at least one row returned 
    if (mysqli_num_rows($content) < 1) { 
    // Invalid lookup, show error to user 
    } 
    // Got a row back, so query was valid 
    else { 
    while($row = mysqli_fetch_array($content)) { 
     $db_username = $row['username']; 
     $db_email = $row['email']; 
     $db_code = $row['code']; 
    } 
    } 
} 
else { 
    // Query failure - display error to user 
    // and check mysqli_error() internally for debugging 
} 

우리는 이미 제대로 mysqli_real_escape_string($formcode)를 통해 $formcode을 탈출했다고 가정합니다.

+0

고마워요. 그리고 yes, $ formcode가 이스케이프됩니다. – PartisanEntity

+0

false는 구문 오류 및 db 통신 문제에만 해당됩니다. 행을 반환하지 않는 쿼리는 실패가 아닙니다. 그것은 단지 0 행 결과 집합입니다. 이것이 바로 num_rows() 함수가 –

+0

@MarcB가 이미 처리 된 이유입니다. 처음에는 질문을 잘못 읽었습니다. –

관련 문제