我不确定为什么,但我收到此错误
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");
请让我知道为什么这不起作用。
答案 0 :(得分:0)
看起来像一个拼写错误:对象“$ m”未在函数updatemongo()
中实例化
要么在此处创建,要么global $m;
获取访问权限。
答案 1 :(得分:0)
$ this-> db-> exchangeDB在放入$ collection时包含null或类似内容?由于我们不知道该变量的实例化位置,因此很难告诉我们。
$ collection-> update(array(“from”=> $ from),$ data);
是导致错误的原因,错误很明显:$ update不是对象。否则会抱怨“PHP致命错误:在xx行上的/my/php/file.php中调用未定义的方法YourClass :: yourMethod()”
答案 2 :(得分:0)
updatemongo()
函数无权访问$m
变量。请将它传递给这样的函数:
$fetch->updatemongo($m, $from, $newdata);
并将您的功能定义更改为:
public function 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
可用于该功能。