2012-08-13 81 views
0

我想比較兩個值,如果一個比另一個大,那麼它會在數據庫中執行一些更新,但結果總是返回false。這是一部分代碼im奮鬥着的例子:與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'; 
} 

?> 

這個回聲錯誤。 $ 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 2012-08-13 19:56:32

+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 2012-08-13 19:56:37

+2

var_dump()$ count和$ posts ['count']值來測試它們是什麼數據類型以及它們實際包含的內容 – 2012-08-13 19:58:38

回答

3

file_get_contents()返回一個字符串值,所以如果你想返回的每一行陣列中的(一個項目總是會使用is_numeric()

時評價爲false您應該使用file()而不是file_get_contents()

+2

即使字符串的內容是數字類型? – Matt 2012-08-13 19:58:24

+0

@Matt根據文檔,它會返回一個文件內容的字符串,或者在失敗時返回false。 – 2012-08-13 20:00:03

+2

is_numeric()對於像'42'這樣的字符串返回TRUE。 is_int()然而,不。 - 請參閱http://php.net/is_numeric上的示例 – Shi 2012-08-13 20:00:07