【问题标题】:PHP not passing variablePHP没有传递变量
【发布时间】:2015-02-19 02:53:52
【问题描述】:

我遇到了一个相当奇怪的问题,让我完全难住了。

我正在尝试将 PHP 变量从一个文件传递到另一个文件,然后将该变量插入 Flickr API 中的搜索函数。

在上下文中,它正在提取一个包含天气预报位置的变量 ($location)。由用户输入定义的 $location(位于 scraper.php 中)进入搜索功能。该函数向 Flickr API 发送一个请求,该 API 返回一个图像 url。

目前情况:

require_once('flickr.php'); 
include 'scraper.php';

$Flickr = new Flickr; 
$data = $Flickr->search($location); 

请记住,如果我在文件本身中定义搜索字符串,这一切都会很好地工作。只有当我尝试使用来自 scraper.php 的变量时,它才根本不搜索任何内容。例如:

$string = 'hawaii'
$Flickr = new Flickr; 
$data = $Flickr->search($string);

以上工作正常。更令人困惑的是,如果我在进入搜索功能之前回显“$location”,我会得到正确的结果。变量存在并包含在内。由于某种原因,它只是无法执行该功能。

任何帮助将不胜感激。以下是该项目的完整代码:

搜索.php:

echo $location;
$Flickr = new Flickr; 
$data = $Flickr->search($location); 

foreach($data['photos']['photo'] as $photo) {  

    //returns 1 photo url at large size (1024)
    $image_url = 'http://farm' . $photo["farm"] . '.static.flickr.com/' . $photo["server"] . '/' . $photo["id"] . '_' . $photo["secret"] . '_b.jpg';
} 

flickr.php(api键取出):

include 'scraper.php';

class Flickr { 
    private $apiKey = 'MYAPIKEY'; 

    public function __construct() {
    } 

    public function search($query = null) { 
        $search = 'http://flickr.com/services/rest/?method=flickr.photos.search&api_key=' . $this->apiKey . '&text=' . urlencode($query) . '&tags=city&sort=relevance&safe_search=1&per_page=1&content_type=1&has_geo=1&format=php_serial'; 
        $result = file_get_contents($search); 
        $result = unserialize($result); 
        return $result; 
    } 
}

我不打算包含 scraper.php,因为它非常大,但如果需要,我会添加。 $location 运行良好。

谢谢!

编辑:'scraper.php' 也被使用并将变量传递到另一个页面以显示天气。

当我从 'search.php' 中回显 '$location' 时,我会在顶部得到一个正确的字符串结果,就像我之前提到的那样。

这里是代码(search.php):

$Flickr = new Flickr; 
echo $location;

$data = $Flickr->search($location);

echo 命令在顶部打印得很好。它只是不会进入搜索功能!

【问题讨论】:

  • 我会在您从刮板获得的 $location 变量上尝试 var_dump()。它可能包含 html 实体或其他一些妨碍它与 Flickr API 一起使用的怪异事物。
  • 在search方法里设置好var_dump $search可以吗?同样,你可以在运行 file_get_contents 后 var_dump $result 吗?
  • @KevinM1 当我在两者上运行 var_dump 时,我得到 NULL。我不确定我是否做得对,但在 search.php 中触发 Flickr->search($location) 后,我正在运行 var_dump。
  • $location 上的 @ChrisHerbert var_dump 返回的字符串很好,很好很干净。没有什么奇怪的。该字符串是从来自地下天气 API 的 JSON 中提取的。该项目最初是一个 PHP 抓取工具,但后来我在 API 中添加了并且从未更改过文件名。
  • 您在日志中看到任何错误吗?

标签: php variables flickr php-include


【解决方案1】:

也许你有多文件包含问题。请使用 include_once 来包含 'scraper.php',因为您会多次包含它。

in flickr.php

include_once('scraper.php');

while searching...

require_once('flickr.php'); 
include_once('scraper.php'); //include or remove this line as it is already included in your flickr.php

$Flickr = new Flickr; 
$data = $Flickr->search($location);

【讨论】:

  • 我试了一下,但没有运气。就像我之前说的,当我在顶部回显变量“$location”时,我没有任何问题。我想提一下,'scraper.php' 也在使用中,并将变量传递到显示天气的单独页面。也许这些导致了问题?
【解决方案2】:

感谢大家的帮助!

我稍微整合了我的代码,并将“search.php”中的 PHP 命令直接包含到运行搜索所需的文件中。我终于能够通过变量。通过取消中间人并将其全部保存在一个文件中,事情开始运作良好。一定是包含问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    相关资源
    最近更新 更多