2010-10-11 72 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

謝謝FRKT我不知道我怎麼錯過了! – cybermotron 2010-10-11 07:32:30

相關問題