PHP / Mongo: запрос не будет работать, если внутри функции; - PullRequest
0 голосов
/ 11 октября 2010

Следующий 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($_POST['mod'] == "add") {

//      add_data();
//  }

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

//  function add_data() {

Есть ли обходной путь, или я просто что-то упустил.Потому что в противном случае это может стать очень грязным, очень быстрым.

1 Ответ

1 голос
/ 11 октября 2010

Вы не можете получить доступ к переменным, объявленным вне функции, если вы не объявите global $variable.См. Документацию по переменная область действия .

$foo = "foo";

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

# Prints "foo"
function print_foo(){
   global $foo;
   print $foo;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...