致命错误:不能使用MongoCursor类型的对象作为数组

时间:2014-02-26 20:27:13

标签: php mongodb error-handling database

我正在使用带有php的MongoDB - 我正在尝试获取使用用户名和用户登录的用户的ID密码并将其存储为会话变量。

我一直收到这个错误,我不明白为什么。

<?php
session_start();

$dbhost = 'localhost';
$dbname = 'story';

$mongo = new MongoClient("mongodb://$dbhost");
$db = $mongo->$dbname;

$collection = $db->users;

$email=$_POST['email'];
$password=$_POST['password'];

$user = $collection->find(array("email" => $email, "password" => $password));
$user->limit(1);
if ($user->count(true) > 0){
    $_SESSION['user']['userid']=iterator_to_array($user['_id']->{'$id'});
    header("Location:../webpages/master.php?page=home");
}else{
    echo "Wrong username or password";
}

&GT;

2 个答案:

答案 0 :(得分:0)

正如Sammaye所指出的那样,find()函数会返回一个游标,然后你迭代它来查找文档。如果您知道只有一个文档,而不是使用find(...) - &gt; limit(1),它仍然返回一个光标,您可以使用findOne(),它返回文档本身。

答案 1 :(得分:0)

find()返回一个游标,您可以在其上迭代以检索结果。

如果是单个文档检索,请使用findOne()

$user = $collection->findOne(array("email" => $email, "password" => $password));

你不需要使用以下行:

$user->limit(1); // Don't use limit() with findOne()