我编写了一个数据库类但无法从内部访问该方法:
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;
}
}
运行此类时出现此错误:
致命错误:调用未定义的函数safe_value()
当我使用mysql_real_escape_string
代替safe_value
方法时,该类可以完美地运行。为什么我无法访问safe_value
函数,为什么它会向我显示此错误?
答案 0 :(得分:3)
当从类中调用非静态成员函数时,您需要使用$this
来引用它,在这种特殊情况下,您应该将其称为
$values[$i] = $this->safe_value($values[$i]);
答案 1 :(得分:1)
对于非静态方法,您需要将调用更改为$values[$i] = $this->safe_value($values[$i]);
。对于静态方法,请使用$values[$i] = database::safe_value($values[$i])
。