2012-08-13 70 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