2012-08-13 2 views
0

두 값을 비교하고 하나가 다른 값보다 크면 데이터베이스에서 일부 업데이트를 수행하지만 결과는 항상 false를 반환합니다. 다음은이 코드의 일부입니다.PHP 연산자에 문제가 있음

<?php 
$page = mysql_fetch_object(mysql_query("SELECT * FROM `site` WHERE `id`='{$posts['him']}'")); 
$count = file_get_contents($site->site_url . 'count/numbercheck.php?url=' . ($page->url)); 
if(is_numeric($count) && $count > $posts['count']) 
{ 
    echo 'true'; 
}else{ 
    echo 'false'; 
} 

?> 

이 오류는 false입니다. $ posts [ 'count']는 다른 페이지의 jquery 게시물에서 가져온 것입니다. 그리고 나는 $ count가 $ posts [count]보다 큽니다. 그리고 그 결과를 확실히하기 위해서 :

<?php 
$page = mysql_fetch_object(mysql_query("SELECT * FROM `site` WHERE `id`='{$posts['him']}'")); 
$count = file_get_contents($site->site_url . '/count/numbercheck.php?url=' . ($page->url)); 
if(is_numeric($count) && $count > $posts['count']) 
{ 
    echo 'true' . $count . ' ' . $posts['count']; 
}else{ 
    echo 'false' . $count . ' ' . $posts['count']; 
} 

?> 

"false 86 85"를 반환합니다. 나는 그것을 얻지 않는다, 나는 무엇을 잘못하고 있는가? 그 86보다 큰 85

+2

AND 중 어느 부분이 실패했는지 확인 했습니까? 'is_numeric'이 false를 리턴합니까, 아니면 확실히 비교 부분입니까? '$ posts [ 'count']'에'is_numeric'을 실행 해 보았습니까? – andrewsi

+3

질문에 대답하는 데 도움이되지는 않지만 mysql_ * 함수 사용을 중단해야합니다. 그들은 더 이상 사용하지 않을 것입니다. 대신 [PDO] (http://php.net/manual/en/book.pdo.php) (PHP 5.1 이상 지원) 또는 [mysqli] (http://php.net/manual/en/book)를 사용하십시오. mysqli.php) (PHP 4.1부터 지원). 어떤 것을 사용해야하는지 잘 모르겠 으면 [이 기사를 읽으십시오] (http://net.tutsplus.com/tutorials/php/pdo-vs-mysqli-which-should-you-use/). – Matt

+2

var_dump() $ count 및 $ posts [ 'count'] 값을 사용하여 해당 데이터 유형과 실제로 포함 된 데이터를 테스트하십시오. –

답변

3

file_get_contents()is_numeric()

를 사용할 때 각 라인에 대한 배열 (한 항목을 반환하려면 항상 false으로 평가하는 것입니다 수 있도록 문자열 값을 반환하는 것을 나에게 분명 파일)을 사용하려면 file_get_contents() 대신 file()을 사용해야합니다.

+2

문자열의 내용이 숫자 유형이더라도? – Matt

+0

@Matt 문서에 따르면 파일 내용의 문자열을 반환하거나 실패하면 false를 반환합니다. –

+2

is_numeric()은 '42'와 같은 문자열에 대해 TRUE를 반환합니다. 그러나 is_int()는 그렇지 않습니다. - http://php.net/is_numeric에서 예제를 참조하십시오. – Shi

관련 문제