PHP中的致命错误:无法重新分配$this
所以我不是PHP方面的专家,从现在起我就一直在学习过程,当时我决定尝试一些OOP。我尝试创建一个MySQL转义函数来防止SQL注入,但是错误“致命错误:无法重新分配$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); } 当我删除“全局”时,错误不再存在,但需要这样做 谢
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
(仍然不使用准备好的语句…?)中-根本不必是全局的。请参见以下内容: