Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 自动递增转换-我在这里缺少什么?_Php_Mongodb - Fatal编程技术网

Php 自动递增转换-我在这里缺少什么?

Php 自动递增转换-我在这里缺少什么?,php,mongodb,Php,Mongodb,请参考以下位置 在指定的URL(上面)中,有一个java脚本中自动增量逻辑的示例代码,该代码已转换为php(我提供了下面的代码)-我无法使其无错误。有人能纠正我在转换过程中哪里出了问题吗 <?php function getNextSequence($name) { global $db; $ret = $db->counters->findAndModify( array( 'query'=>array( '_id'=

请参考以下位置

在指定的URL(上面)中,有一个java脚本中自动增量逻辑的示例代码,该代码已转换为php(我提供了下面的代码)-我无法使其无错误。有人能纠正我在转换过程中哪里出了问题吗

<?php
function getNextSequence($name) {
global $db;
   $ret = $db->counters->findAndModify(
          array(
            'query'=>array( '_id'=>name),
            'update'=>array( '$inc'=> 

array('seq'=> 1) ),
            'new'=>'true'
          )
   );
   return $ret->seq;
}

$db = new MongoClient();
$db = $db->test;

$db->counters->insert(
array(
    '_id'=>"userid",
     'seq'=>0
      )
);
$db->users->insert(
   array(
     '_id'=> getNextSequence("userid"),
     'name'=> "Sarah C."
   )
);

$db->users->insert(
   array(
     '_id'=> getNextSequence("userid"),
     'name'=> "Bob D."
   )
);
$ret = $db->users->find();
print_r($ret);
?>

PHP注意:在第6行的C:\PHP\seq.PHP中使用未定义的常量名称-假定为“name” PHP致命错误:未捕获异常“MongoResultException”,在C:\PHP\seq.PHP:10中显示消息“需要删除或更新” 堆栈跟踪: #0 C:\php\seq.php(10):MongoCollection->findAndModify(数组) #1c:\php\seq.php(25):getNextSequence('userid')) #2{main}
在第10行的C:\php\seq.php中抛出
$
变量缺少
$
。 此外,传递给findAndModify助手的参数不正确,请参阅以获取更多信息

脚本的正确getNextSequence()应该是:

<?php
function getNextSequence($name) {
    global $db;

    $ret = $db->counters->findAndModify(
        array( '_id' => $name),
        array('$inc' => array('seq' => 1)),
        array(),
        array('new' => true)
    );
    return $ret["seq"];
}