我已经将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> 0)”语句的多种变体,例如针对> = 1,!$ numreviews等进行测试,还将整数转换为字符串并将其与其他字符串进行比较。
没有错误,打印所有返回的变量将为每个没有场地ID或不返回任何内容(而不是零)的评论的属性提供正确的评论数。我也将它与$ result-> review_count直接比较了相同的问题。

是否有更好的方法进行比较或使用更好的变量格式来获得正确的结果?

编辑:
语句if ($yelpID = $searchresults['yelpID']) {不能正常运行。它与文件中的其他语句相同,验证行内容对其给定变量(例如, $ fbID = $ searchresults ['fbID']等。
当我将require('yelp.php');更改为require_once('yelp.php');所有场地输出都更改为仅显示第一个迭代结果。查看输出的场所,在成功结果之后的第一个场所发生错误,这使我认为yelp.php文件中存在代码的普遍性,导致if ($yelpID = $searchresults['yelpID']) {被忽略,直到找到肯定的结果为止( db中的yelpID),即正确显示每个场所并带有大量评论,直到遇到空白场所。然后显示前面的场所的评论数,并继续针对每个空白场所,直到再次显示正确的数字时找到具有yelpID的场所。错误在没有yelpID的下一个场所输出上再次发生,依此类推。

错误输出样本:(第1行是var_dump)
字符串(23)“ bayview-hotel-bushmills”
湾景酒店
在Yelp上阅读3条评论

本尼迪克特人
阅读yelp上的3条评论(注意没有var_dump输出,此链接包含上面的Bayview Hotel条目的URL)

字符串(31)“ bushmills-inn-hotel-bushmills-2”
布什米尔斯旅馆酒店
在Yelp上阅读7条评论

我怀疑这将是一个新问题,而不是使这个问题更加混乱/混乱?

编辑结束

注意:我知道需要升级到mysqli,但是我要更新数千行旧代码。目前,我正在研究功能,然后再检查代码以获取最佳实践。

最佳答案

由于yelp.php有点像黑匣子;对此行为的最佳解释是,如果找到匹配项,则仅设置那些变量。将您的代码更新为此可以解决以下问题:

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


我还注意到了这种特殊的if语句,您是否意识到这是一项作业,或者这是复制/粘贴错误?如果您想测试(如果要这样做的话)

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

关于php - 如何验证变量中的PHP整数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31567875/

10-11 12:56