2010-11-06 58 views
1

我寫了一個數據庫類的函數或方法,但不能從內部訪問的方法:調用其類的內部

class database{ 
. 
. 
private $mgc; 
private $real; 
public function insert($table,$values,$row = null){ 
. 
. 
for($i = 0; $i < count($values); $i++){ 
    $values[$i] = safe_value ($values[$i]);  
    } 
. 
. 
} 
public function safe_value($value) { 
    if($this->real) { 
     if($this->mgc) { $value = stripslashes($value); } 
     $value = mysql_real_escape_string($value); 
    } 
    else { 

     if(!$this->mgc) { $value = addslashes($value); } 

    } 
    return $value; 
} 

} 

當運行這個類我有這樣的錯誤:

Fatal error: Call to undefined function safe_value()

當我使用mysql_real_escape_string而不是safe_value方法時,該類完美工作。爲什麼我不能訪問safe_value函數,爲什麼它會顯示我這個錯誤?

回答

3

當從您需要參考其使用$this到類中調用非靜態成員函數,在這種特殊情況下,你應該把它作爲

$values[$i] = $this->safe_value($values[$i]); 
+0

但是爲什麼'$ values [$ i] = mysql_real_escape_string($ values [$ i]);'沒有這個錯誤? – TheNone 2010-11-06 23:50:15

+0

@phpExe,因爲'mysql_real_escape_string'不是你類的成員函數,它只是一個可用的庫函數。 – 2010-11-06 23:51:19

+0

非常感謝Mark。 – TheNone 2010-11-06 23:57:44

1

您需要調用更改爲$values[$i] = $this->safe_value($values[$i]);爲非靜態方法。對於靜態方法,請使用$values[$i] = database::safe_value($values[$i])