Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.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中的致命错误:无法重新分配$this_Php - Fatal编程技术网

PHP中的致命错误:无法重新分配$this

PHP中的致命错误:无法重新分配$this,php,Php,所以我不是PHP方面的专家,从现在起我就一直在学习过程,当时我决定尝试一些OOP。我尝试创建一个MySQL转义函数来防止SQL注入,但是错误“致命错误:无法重新分配$this”被抛出 public function escape($result) { global $this->con; return mysqli_real_escape_string($this->con, $result); } 当我删除“全局”时,错误不再存在,但需要这样做 谢

所以我不是PHP方面的专家,从现在起我就一直在学习过程,当时我决定尝试一些OOP。我尝试创建一个MySQL转义函数来防止SQL注入,但是错误“致命错误:无法重新分配$this”被抛出

public function escape($result) {
        global $this->con;
        return mysqli_real_escape_string($this->con, $result);
}
当我删除“全局”时,错误不再存在,但需要这样做


谢谢。

为什么您要同时使用
global
$this

global
正在从范围外指定具有给定名称的变量

比如说

$variable = 'test';
final class Test
{
    public function __toString()
    {
        global $variable;
        return $variable;
    }
}
echo new Test();
查看如何使用$variable,同时将其分配到范围之外

因此,在执行
global$this
时,它会尝试在
$this
上分配,但这是无法完成的


如果您试图编写OOP代码,那么一定要使用PDO而不是mysqli。此外,如注释中所述,请使用准备好的语句。

Glogal为全局名称空间分配一个变量。即,在您的对象之外,供所有人使用$这将引用对象的当前实例。你不能让美元全球化,那样每个人都可以改变。创建对象的实例,并在代码中更改该实例的con值。这根本没有意义。。。如果您有权在该范围内访问
$this->con
,则可以将其作为参数传递到
mysqli\u real\u escape\u string
(仍然不使用准备好的语句…?)中-根本不必是全局的。请参见以下内容: