0

次のコードを含む小さな PHP スクリプトがあります。

$m = new MongoClient(Settings::$db);
$db = $m->db;

// get the 'customers' collection
$customers = $db->customers;

// determine if this customer already exists
$c = $customers.findOne(array('email' => $email)); <--- throws
if (is_null($c)) {
    $customers.insert(array(
        'email' => $email,
        'firstname' => $firstName,
        'lastname' => $lastName
    ));
}

// get the 'payments' collection
$payments = $db->payments;

// add a record
$payments->insert(array(
    'email' => $email,
    'firstname' => $firstName,
    'lastname' => $lastName,
    'amount' => $price,
    'token' => $token
));

しかし、それはエラーをスローしています:

PHP 致命的なエラー: 未定義の関数 findOne() の呼び出し ...

これで、ファイルをダウンロードしてextディレクトリにコピーしました。php_mongo.dllさらに、次の行を に追加しましたphp.ini

extension=php_mongo.dll

それ以来、サーバーを何度も再起動しました。

拡張機能が読み込まれていないfindOneため、このメソッドを使用できないように感じます。php_mongoしかし一方で、 を作成するときMongoClientも、データベースとコレクションを取得するときにもスローしません。

何が起きてる?

4

2 に答える 2

1

私のコメントによると、間違って別の言語のメソッド アクセス構文を使用した可能性があります。

これ

$c = $customers.findOne(array('email' => $email));

残念ながらPHPなので、ドットではなくオブジェクト演算子が必要です:

$c = $customers->findOne(array('email' => $email));
于 2013-09-27T05:26:09.933 に答える
1

ドットは間違いだと思います.try

$c = $customers->findOne(array('email' => $email)); 
于 2013-09-27T05:22:01.363 に答える