2015-01-24 2 views
-1

이 SQL 쿼리 반환 결과 다음에 $_SESSION["fbid"] = $user->fbid;과 같은 빈 변수를 저장하고 배열은 Array ([fbid] =>)이됩니다. 데이터베이스의 모든 기록이 없을 때데이터베이스가 비어 있어도 mySQL이 결과를 반환합니다.

$result = $mysqli->query("SELECT * FROM `users` WHERE `fbid` = '$fbid'") or die(mysqli_error()); 
    if ($result) { 
    $user = $result->fetch_object(); 
     ... 

주요 질문은, 왜 if ($result)을 통과한다?

+5

을보십시오. – CBroe

+1

쿼리가 성공하지 못하면 거짓을 반환합니다. 성공했지만 빈 집합을 반환 한 경우 반환 된 객체의 num_rows 속성을 확인합니다. –

답변

1
당신은 if($result)

이 말을하는

귀하의 경우는 항상 true 될 것이라고 주장한다. 예 : if($result == 1)

$ 결과가 같거나 같지 않아야합니다.

if 문이 작동하는 방식입니다. 그러나, 실 거예요 어쨌든 일 "쿼리하면"당신이 뭔가를 말할 필요가

if(mysqli_num_rows($result) > 0){ 
    $user = $result->fetch_object(); 
}   
+0

'if ($ result == ''1)', 고마워요! > 0도 잘 동작하지만, 쿼리를 1로 제한하고자하므로 1로 남겨 둘 것입니다. –

+0

환영합니다. SELECT * FROM users where fbid = '$ fbid LIMIT 1' "' –

1

mysqli->query 반환하거나 사실, 또는 거짓 또는 mysqli_result 객체를 말하고있다.

는 두 사실mysqli_result 목적은 if($result) 통과하며, false 오류의 경우에 돌려 보냈다. 빈 결과를 얻는 것은 오류가 아닙니다.

쿼리가 빈 결과를 반환하는지 확인해야하는 경우 예를 들어 $num_rows 속성을 사용하십시오.

0

mysqli::query은 쿼리가 실패 할 경우 FALSE을 반환합니다. 이 경우 성공적으로 실행되었고 0 행이 리턴되었습니다. mysqli_query() 아마도 구문 오류와 함께 실패 할 경우에만 실패합니다

$user = $result->fetch_object(); 
if ($user) { 
    # do stuff... 
1

귀하의 테스트 if ($result) :

당신은 빈 결과 집합을 확인 fetch_object의 반환 값을 확인하려면

.

유효한 쿼리가 있으면 테스트가 통과합니다. 유효한 쿼리가 빈 집합을 반환하는 경우에도 마찬가지입니다 (아무 것도 발견하지 않음 이 유효한 결과 임).

실제로 쿼리가 성공했는지 확인하기 위해 쿼리 결과를 확인해야하지만, 이것이 반환되었는지 여부와는 다릅니다. _empty_ 결과가 여전히 _valid_ 결과이기 때문에

$result = $mysqli->query("select..."); 
if ($result->num_rows) { 
    // do stuff 
} 
관련 문제