2017-10-28 33 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。另外,如評論中所述,使用準備好的陳述。

相關問題