2010-10-11 2 views
0

Следующий PHP бросает эту ошибку ...PHP/Mongo: запрос не будет работать, если внутри функции;

Fatal error: Call to a member function findOne() on a non-object in J:\xampplite\htdocs\Produkshunator\home.back.php on line 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

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

$foo = "foo"; 

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

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

Thankyou FRKT Я не знаю, как я пропустил это! – cybermotron

Смежные вопросы