2017-10-28 49 views
-3

因此,我不是PHP的专家,从现在开始我一直在学习程序,当时我决定尝试一些OOP。我试图创建一个MySQL转义函数来防止SQL注入,但错误“致命错误:无法重新分配$ this”会被吐出。

public function escape($result) { 
     global $this->con; 
     return mysqli_real_escape_string($this->con, $result); 
} 

当我删除“全球”,错误不再存在,但需要这样的。

谢谢。

+0

Glogal为全局名称空间分配一个变量。即在你的对象之外,供大家使用。 $ this引用您的对象的当前实例。你不能让这个全球化,这将允许每个人都改变。创建对象的实例并在代码中更改该实例的con值。 – Nic3500

+2

这甚至没有意义......如果你有权访问该范围中的'$ this-> con',那么你可以将它作为参数传递给'mysqli_real_escape_string'(仍然没有使用准备好的语句...?)就在那里 - 根本就不必是全球性的。 – CBroe

+0

看到这:https://stackoverflow.com/questions/1523479/what-does-the-variable-this-mean-in-php – Nic3500

回答

1

为什么将global$this放在一起?

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

例如

$variable = 'test'; 
final class Test 
{ 
    public function __toString() 
    { 
     global $variable; 
     return $variable; 
    } 
} 
echo new Test(); 

看我怎么可以用$变量,而它已经被分配范围之外?

因此,在做global $this时,它会尝试分配$this,这是无法完成的。

如果你正在尝试做OOP代码,你应该明确地使用PDO而不是mysqli。另外,如评论中所述,使用准备好的陈述。

相关问题