PHP错误类内函数类内。。等等什么?迷路的
可能重复:PHP错误类内函数类内。。等等什么?迷路的,php,mysql,Php,Mysql,可能重复: 我有一个类文件,我们叫它“东西” Stuff.class 里面有一个班级 class Stuff { 这里有一个公共静态函数 public static function morestuff() { } 在内部,我需要调用另一个函数进行查询 $q="Select from contacts where id =". $this->$db->escapeVal($ID)"."; 但我会犯错误 $q="Select from contacts where
我有一个类文件,我们叫它“东西”
Stuff.class
里面有一个班级
class Stuff {
这里有一个公共静态函数
public static function morestuff() {
}
在内部,我需要调用另一个函数进行查询
$q="Select from contacts where id =". $this->$db->escapeVal($ID)".";
但我会犯错误
$q="Select from contacts where id =". escapeVal($ID)".";
返回
Call to undefined function escapeVal()
$q="Select from contacts where id =". $db->escapeVal($ID)".";
Call to a member function escapeVal() on a non-object
$q="Select from contacts where id =". $this->$db->escapeVal($ID)".";
Using $this when not in object context
返回
Call to undefined function escapeVal()
$q="Select from contacts where id =". $db->escapeVal($ID)".";
Call to a member function escapeVal() on a non-object
$q="Select from contacts where id =". $this->$db->escapeVal($ID)".";
Using $this when not in object context
返回
Call to undefined function escapeVal()
$q="Select from contacts where id =". $db->escapeVal($ID)".";
Call to a member function escapeVal() on a non-object
$q="Select from contacts where id =". $this->$db->escapeVal($ID)".";
Using $this when not in object context
那我该放什么呢
编辑:
同一文件中的类似函数具有以下代码
'id' = '" . $this->db->escapeVal($this->_Id) . "'
然而,当我尝试在mysql查询中使用这段代码时,我得到了以下错误
Using $this when not in object context
我怀疑
$db
是一个全局变量,请尝试
public static function morestuff() {
global $db;
$q="Select from contacts where id =". $db->escapeVal($ID);
}
如果函数在同一个类中并且也是静态的,那么您将像
self::escapeVal($ID);
我怀疑
$db
是一个全局变量,请尝试
public static function morestuff() {
global $db;
$q="Select from contacts where id =". $db->escapeVal($ID);
}
如果函数在同一个类中并且也是静态的,那么您将像
self::escapeVal($ID);
您不理解OOP的概念
$this
是一个引用当前对象(或此对象)的变量。意思是:
class Test {
public function __construct() { //Called when object is instantiated
var_dump($this);
}
}
$test = new Test();
你会得到类似的东西
object(Test)#1 (0) { }
不能在类方法之外使用$this
。它就是不能那样工作
关于您遇到的错误,请尝试找出数据库连接存储在哪里。该连接应该传递给对象以作为字段存储,或者直接传递给方法以在内部使用它
编程不是复制/粘贴有效的代码。您不理解OOP的概念
$this
是一个引用当前对象(或此对象)的变量。意思是:
class Test {
public function __construct() { //Called when object is instantiated
var_dump($this);
}
}
$test = new Test();
你会得到类似的东西
object(Test)#1 (0) { }
不能在类方法之外使用$this
。它就是不能那样工作
关于您遇到的错误,请尝试找出数据库连接存储在哪里。该连接应该传递给对象以作为字段存储,或者直接传递给方法以在内部使用它
编程不是复制/粘贴有效的代码。因为您的函数是静态的,所以变量
$this
将不存在于其中
要解决您的问题,有两种解决方案:
$db
设为静态变量,这意味着它在每个实例中都是相同的morestuff()
中删除static
关键字。在这种情况下,您需要创建该类的实例,以便调用morestuff()
因为您的函数是静态的,所以变量
$this
将不存在于其中
要解决您的问题,有两种解决方案:
$db
设为静态变量,这意味着它在每个实例中都是相同的morestuff()
中删除static
关键字。在这种情况下,您需要创建该类的实例,以便调用morestuff()
开始工作。很高兴我能让它发挥作用,非常感谢。我建议您将其作为参数插入,而不要使用全局参数@事实上,你应该建议海报,而不是惩罚我!我用你可能会发现有用的信息更新了这个问题@sabenemalik我刚刚给你投票了,不是吗worry@SabeenMalik:不,你是提供解决方案的人,因此你应该指出你眼中似乎正确的解决方案。如果使用
global
对你来说似乎是正确的,那么你绝对应该得到否决票。如果没有,请更正您的帖子,我将取消我的投票。很简单:)@Truth你“建议”不要使用global,但从表面上看,你是在强迫它,而不仅仅是建议它。我建议你将它作为参数注入,而不要使用global@事实上,你应该建议海报,而不是惩罚我!我用你可能会发现有用的信息更新了这个问题@sabenemalik我刚刚给你投票了,不是吗worry@SabeenMalik:不,你是提供解决方案的人,因此你应该指出你眼中似乎正确的解决方案。如果使用global
对你来说似乎是正确的,那么你绝对应该得到否决票。如果没有,请更正您的帖子,我将取消我的投票。很简单:)@Truth you'sugged'不使用global,但从外观上看,您是在强迫它,而不仅仅是建议它。可能与问题无关,但您需要$this->db
,而不是$this->$db
。谢谢,我也注意到了这一点。与其交替使用代码和英语,不如不间断地、完整地呈现,简洁、有代表性,因此可以直接提供给PHP并按原样运行。如果您需要注释,请使用注释。可能的重复,可能与问题无关,但您需要的是$this->db
,而不是$this->$db
。谢谢,我也注意到了这一点。与其在代码和英语之间交替,不如不间断、完整、简洁地呈现,这样就可以直接将其提供给PHP并按原样运行。如果需要注释,请使用注释。可能的重复项,