PHP / Mongo:如果在函数内部,查询将不起作用;

时间:2010-10-11 07:24:22

标签: php mongodb

以下php引发了此错误...

  

致命错误:调用成员函数   findOne()在非对象中   j:\ Xampplite文件\ htdocs中\ Produkshunator \ home.back.php   在第27行

这是php ...

<?php
/***********************************************
 * 
 * Make Connection
 * 
*************************************************************/  

    $conn = new Mongo();

    if($_POST['mod'] == "add") {

        add_data();
    }

/***********************************************
 * 
 * Add data
 * 
*************************************************************/

    function add_data() {

        $doc         = array("email" => $_POST['email']);
        $prod        = array("productions");

/*line 27 -->*/     $category_exists = $conn -> registration -> users -> findOne($doc, $prod);   // <--- line 27

            if (in_array($_POST['new_title'], $category_exists['productions'])){

                $response = array("errormsg" => "That production already exists, please use a unique title.");

            } else {

                $newdata = array('$push' => array("productions" => $_POST['new_title']));

                $doc = array("email" => $_POST['email']);

                $conn -> registration -> users -> update($doc, $newdata);

                $response = array("production" => $_POST['new_title']);
            }

        reply($response); 
    }

/***************************************************
 * 
 *  Reply
 *  
***************************************************************/
    function reply($response) {

        echo json_encode($response);
    }
?>

...但是...当我注释掉对add_data()及其函数声明的调用时,它的所有部分都是'if'语句,它可以毫无障碍地工作......

    if($_POST['mod'] == "add") {

//      add_data();
//  }

/***********************************************
 * 
 * Add data
 * 
*************************************************************/

//  function add_data() {

是否有解决方法,或者只是我缺少的东西。因为否则这会非常麻烦,非常快。

1 个答案:

答案 0 :(得分:1)

除非声明global $variable,否则无法访问在函数外声明的变量。请参阅variable scope上的文档。

$foo = "foo";

# Doesn't print anything
function print_foo(){
   print $foo;
}

# Prints "foo"
function print_foo(){
   global $foo;
   print $foo;
}