mongo php调用非对象

时间:2012-07-13 05:06:44

标签: php mongodb osx-leopard

我正在使用带有Snow Leopard的PHP Mongo,并且我一直收到以下错误:

  

'undefined variable'和'试图获取非对象的属性'

我正在尝试做什么:

从URL中提取变量(类似于下面的内容)以填充mongo db中的集合。另外,我正在尝试捕获用户的IP地址以及操作发生的日期/时间。

以下是可能的网址示例:

img src="http://localhost:8888/index.php?PIN=123&CID=123&EID=456" width="1" height="1"

PHP / Mongo驱动程序脚本:

<?php
  // Connect to MongoDB @ localhost w/ login/pass
  $m = new Mongo("mongodb://login:pass@localhost");

  // Connect to DB
  $db = $m ->admin;

  // Connect to Collection
  $collection = $db ->email_opens;

  // Extract date
  $createdOn = $id->getTimestamp();
  $date_open = date('r', $createdOn);

  // Get variables from URL
  $PIN = $_GET['PIN'];
  $CID = $_GET['CID'];
  $EID = $_GET['EID'];

  // Retrieves user's IP address
  $ip = $_SERVER["REMOTE_ADDR"];

  // Set array
  $obj = array('PIN' => $PIN, 'CID' => $CID, 'EID' => $EID, 'date_open' => $date_open, 'ip' => $ip); 

  // Set index
  $collection -> ensureIndex(array("id" => 1));

  // Insert collection
  $collection -> insert($obj);

  // Probably not necessary
  $connection -> close();
?>

1 个答案:

答案 0 :(得分:1)

这显然不是MongoDB的麻烦,而只是一个php。 作为Justin Jenkins commented,您在查询之前未设置$ id。

在更多的MongoDB部分,您正在 id 字段中创建一个无用的(关于您插入的示例对象)。 您不需要在生成的id上创建索引,这是由mongo服务器自动完成的。并且,该字段的确切名称是 _id (带有下划线)。