0

我不知道为什么,但我收到了这个错误

Fatal error: Call to a member function update() on a non-object in /home/XXXXXXXXXXXXXXXXX/classes/core.php on line 22

在那个页面上我有这个

public function updatemongo($from,$data)
    {
        $this->db = $m->exchange_rates;
        $collection = $this->db->exchangeDB;
        $collection->update(array("from" => $from), $data);
    }

这就是我调用这个函数的方式

foreach ($currencies as $to)
 {
    if($from != $to)
    {

        $url = 'http://finance.yahoo.com/d/quotes.csv?f=l1d1t1&s='.$from.$to.'=X';
        $handle = fopen($url, 'r');

        if ($handle) {
            $result = fgetcsv($handle);
                fclose($handle);
        }

        $newdata = array('$set' => array("exchangehistory.{$result[1]}.{$result[2]}" => array("to" => $to, "rate" => $result[0], "updated" => $result[2])));
        $fetch->updatemongo($from,$newdata);

        $newdata = array('$set' => array("currentexchange" => array("to" => $to, "rate" => $result[0], "updated" => $result[2])));
        $fetch->updatemongo($from,$newdata);


    }
 }

是的,需要访问的文件也有require_once("core.php");

请让我知道为什么这不起作用。

4

3 回答 3

0

看起来像一个错字:对象“$m”没有在函数中实例化updatemongo()

要么在此处创建它,要么在global $m;它存在时获得访问权限。

于 2012-06-05T13:13:04.010 回答
0

$this->db->e​​xchangeDB 放入 $collection 时是否包含 null 或类似内容?我们很难说清楚,因为我们不知道该变量在哪里被实例化。

$collection->update(array("from" => $from), $data);

是您的错误的原因,并且错误很明显: $update 不是对象。否则它会抱怨“PHP 致命错误:在第 xx 行的 /my/php/file.php 中调用未定义的方法 YourClass::yourMethod()”

于 2012-06-05T13:15:21.897 回答
0

updatemongo()函数无权访问该$m变量。请将它传递给这样的函数:

$fetch->updatemongo($m, $from, $newdata);

并将您的函数定义更改为:

公共函数 updatemongo($m, $from, $data) {

或者,您可以m在创建对象后将其属性设置为连接。例如:

public function __construct)
{
    $this->m = new Mongo();
}
...
public function updatemongo($from, $data)
{
    $this->db = $this->m->exchange_rates;
    $collection = $this->db->exchangeDB;
    $collection->update(array("from" => $from), $data);
}

或者,也许您可​​以$this->exchange_rates在上面使用...无论如何,您都无法$m使用该功能。

于 2012-06-05T14:03:19.450 回答