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

関数は変数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

于 2012-06-05T14:03:19.450 に答える
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 Fatal error: Call to undefined method YourClass::yourMethod() in /my/php/file.php on line xx」というメッセージが表示されます。

于 2012-06-05T13:15:21.897 に答える