如何在变量中验证PHP整数?

时间:2015-07-22 15:41:47

标签: php mysql yelp

我已将Yelp评论整合到我的目录网站中,每个会场都有一个Yelp ID,返回评论数和总分。

在成功查询所有场地详细信息的MySQL后,我输出为用户格式化的数据库结果。 Yelp元素是:

while ($searchresults = mysql_fetch_array($sql_result)) {
  if ($yelpID = $searchresults['yelpID']) {
        require('yelp.php');
        if ( $numreviews > 0 ) {
            $yelp = '<img src="'.$ratingimg.'" border="0" /> Read <a href="'.$url.'" target="_blank">'.$numreviews.' reviews</a> on <a href="http://www.tkqlhce.com/click-7842347-10756740-1314724701000" target="_blank"><img src="graphics/yelp_logo_50x25.png" border="0" /></a><br />';
        } else {
            $yelp = '';
        }
    } //END if ($yelpID = $searchresults['yelpID']) {
} //END while ($searchresults = mysql_fetch_array($sql_result)) {

yelp.php文件返回:

$yrating = $result->rating;
$numreviews = $result->review_count;
$ratingimg = $result->rating_img_url;
$url = $result->url;

如果场地有Yelp ID和一个或多个评论,则输出显示正确,但如果场地没有Yelp ID或零评论,则显示前一场地的Yelp评论编号。

我检查了$ numreviews变量类型,它是一个整数。 到目前为止,我已经尝试了“if($ numreviews&gt; 0)”语句的多种变体,例如针对&gt; = 1,!$ numreviews等进行测试,同时将整数转换为字符串并将其与其他字符串进行比较。 没有错误并且打印所有返回的变量给出了每个属性的正确评论数量,其中没有ID的场所或者没有返回任何评论(而不是零)。我也直接将它与$ result-&gt; review_count进行了比较,并遇到同样的问题。

是否有更好的方法可以使比较或更好的变量格式与其一起使用以获得正确的结果?

修改 声明if ($yelpID = $searchresults['yelpID']) {未按预期运行。它与文件中的其他语句相同,验证对于给定变量正确工作的行内容,例如: $ fbID = $ searchresults ['fbID']等 当我将require('yelp.php');更改为require_once('yelp.php')时;所有场地输出都更改为仅显示第一个迭代结果。查看输出的场地后,在成功结果后第一个场地发生错误,这让我觉得yelp.php文件中有一段普遍的代码,导致if ($yelpID = $searchresults['yelpID']) {被忽略,直到找到肯定的结果(数据库中的yelpID),即每个地点都正确显示,并带有评论的yelp数,直到遇到空白的场地。然后显示前面的场所的评论数量,并且对于每个空白场地继续这样做,直到找到具有yelpID的场地时再次显示正确的号码。错误在下一个场地输出上重新出现,没有yelpID等等。

示例错误输出:(第1行是var_dump)
string(23)“bayview-hotel-bushmills”
湾景酒店
阅读yelp上的3条评论

贝尼迪克
阅读yelp的3条评论(注意没有var_dump输出,此链接包含上面Bayview酒店条目的网址)

string(31)“bushmills-inn-hotel-bushmills-2”
布什米尔斯酒店
阅读yelp上的7条评论

我怀疑这会是一个新问题而不是混淆/混淆这个问题吗?

END OF EDIT

注意:我知道需要升级到mysqli,但我有数千行遗留代码需要更新。目前我在查看最佳实践代码之前正在研究功能。

1 个答案:

答案 0 :(得分:0)

因为yelp.php是一个黑盒子;这种行为的最佳解释是,只有在找到匹配项时才设置这些变量。将代码更新为此应修复:

unset($yrating, $numreviews, $ratingimg, $url);
require('yelp.php');

我也注意到这个特殊的if语句,你是否意识到这是一个赋值或者这是一个复制/粘贴错误?如果你想测试(那是,如果用于)

if ($yelpID == $searchresults['yelpID']) {