我正在使用带有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();
?>
答案 0 :(得分:1)
这显然不是MongoDB的麻烦,而只是一个php。 作为Justin Jenkins commented,您在查询之前未设置$ id。
在更多的MongoDB部分,您正在 id 字段中创建一个无用的(关于您插入的示例对象)。 您不需要在生成的id上创建索引,这是由mongo服务器自动完成的。并且,该字段的确切名称是 _id (带有下划线)。