Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP错误类内函数类内。。等等什么?迷路的_Php_Mysql - Fatal编程技术网

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并按原样运行。如果需要注释,请使用注释。可能的重复项,