Подключите xampp к MongoDB - PullRequest
0 голосов
/ 12 марта 2010

У меня запущен экземпляр xampp 1.7.3 и сервер MongoDB 1.2.4 на той же машине.

Я хочу подключить их, поэтому я в основном следовал этому уроку на php.net, похоже, он подключается, но курсоры всегда пусты. Я не знаю, что мне не хватает.

Вот код, который я пытаюсь. Курсор-> действительный всегда говорит ложь. спасибо

<?php
$m = new Mongo(); // connect
try {
  $m->connect();
} catch (MongoConnectionException $ex) {
  echo $ex;
}
echo "conecta...";
$dbs = $m->listDBs();
if ($dbs == NULL) {
  echo $m->lastError();
  return;
}
foreach($dbs as $db) {
  echo $db;
}

$db = $m->selectDB("CDO");
echo "elige bd...";
$col = $db->selectCollection("rep_consulta");
echo "elige col...";

$rangeQuery = array('id' => array( '$gt' => 100));
$col->insert(array('id' => 456745764, 'nombre' => 'cosa'));
$cursor = $col->find()->limit(10);
echo "buscando...";
var_dump($cursor);
var_dump($cursor->valid());
if ($cursor == NULL) echo 'cursor null';
while($cursor->hasNext()) {
    $item = $cursor->current();
    echo "en while...";
    echo $item["nombre"].'...';
}

?>

выполнение этого с помощью командной строки работает идеально

use CDO
db.rep_consulta.find()
-- lot of data here

1 Ответ

1 голос
/ 13 марта 2010

При повторении результатов запроса вы не перемещаете курсор. Выполнение кода выше вызывает бесконечный цикл, так как курсор не продвигается. Попробуйте изменить:

$item = $cursor->current();

до

$item = $cursor->getNext();

Лично я предпочитаю этот синтаксис:

foreach ($cursor as $item)
{
    var_dump($item);
}

Редактировать

Следующий код работает нормально для меня. Вы можете попробовать это?

$m = new Mongo();

$db = $m->CDO;
$col = $db->rep_consulta;

$col->insert(array('id' => 456745764, 'nombre' => 'cosa'));

$cursor = $col->find()->limit(10);

foreach ($cursor as $item)
{
    var_dump($item);
}

Редактировать ++

Кстати, $ cursor-> valid () не вернет true, пока вы не переместите курсор к первому элементу результата. Вот почему вы получаете ложь. Вам еще предстоит продвинуть курсор в этой точке вашего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...