1

我正在将 PHP Mongo 与 Snow Leopard 一起使用,但我不断收到以下错误:

“未定义的变量”和“试图获取非对象的属性”

我正在尝试做的事情:

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

下面是一个可能的 URL 示例:

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();
?>
4

1 回答 1

1

这显然不是 MongoDB 的问题,而只是 php 的问题。正如贾斯汀·詹金斯(Justin Jenkins)所评论的那样,您在查询之前没有设置 $id 。

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

于 2012-07-13T11:57:13.957 回答