2017-10-28 6 views
-3

kann ich nicht neu zuweisen Also bin ich kein Experte mit PHP und habe procedural seit jetzt gelernt, als ich mich entschieden habe, einige OOP auszuprobieren. Ich habe versucht, eine MySQL-Escape-Funktion zu erstellen, um SQL-Injection zu verhindern, aber der Fehler "Schwerwiegender Fehler: kann $ this nicht zuweisen" wird ausgespuckt.

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

Wenn ich entfernen „global“, ist der Fehler nicht mehr vorhanden, aber so braucht.

Danke.

+0

Glogal weist dem globalen Namensraum eine Variable zu. I.e. außerhalb Ihres Objekts, für jeden zu verwenden. $ this verweist auf die aktuelle Instanz Ihres Objekts. Sie können $ nicht global machen, das würde jedem erlauben, sich zu ändern. Erstellen Sie eine Instanz Ihres Objekts und ändern Sie den Wert von con dieser Instanz in Ihrem Code. – Nic3500

+2

Das macht nicht einmal Sinn ... wenn Sie Zugriff auf '$ this-> con 'in diesem Bereich haben, dann können Sie es als Parameter in' mysqli_real_escape_string' (noch nicht mit vorbereiteten Anweisungen ...?) Übergeben genau dort - muss nicht global dafür sein. – CBroe

+0

Sehen Sie dies: https://stackoverflow.com/questions/1523479/what-does-the-variable-this-mean-in-php – Nic3500

Antwort

1

Warum verwenden Sie global und $this zusammen?

global weist eine Variable mit dem angegebenen Namen außerhalb des Bereichs zu.

Zum Beispiel

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

Sehen Sie, wie ich $ Variable verwenden kann, während es außerhalb des Bereichs zugeordnet wurde?

So, wenn Sie global $this tun, versucht es auf $this zuweisen, was nicht möglich ist.

Wenn Sie versuchen, OOP-Code zu tun, sollten Sie definitiv PDO und nicht mysqli verwenden. Verwenden Sie auch, wie in den Kommentaren erwähnt, vorbereitete Anweisungen.

Verwandte Themen