mysql_real_escape_string ist nicht definiert

8

Ich benutze PHP Version 5.3 und versuche, mysql_real_escape_string($unescaped_string) in meinem Code zu verwenden, aber ich bekomme den Fehler:

%Vor%

Ich kann mich aber trotzdem mit der Datenbank verbinden. Warum ist es nicht verfügbar?

Ich benutze PHP Version 5.3.

    
MichaelH 13.12.2012, 09:20
quelle

5 Antworten

16

Aktualisieren wie in comment , mysql_ wurde seit 5.5 abgelehnt :

  

Die mysql-Erweiterung ist seit PHP 5.5 veraltet. Die Erweiterung mysqli oder PDO sollte stattdessen verwendet werden. Die Ablehnung wurde in mysql_deprecation entschieden, wo eine Diskussion der Gründe für diese Entscheidung gefunden werden kann.

und in PHP 7 entfernt .

mysql_real_escape_string() ist Standard-Teil von MySQL-Funktion "Batch" und sollte immer funktionieren, wenn die Erweiterung ist korrekt geladen.

Funktioniert eine andere Funktion mysql_ ? (Es sollte nicht)

Stelle sicher, dass diese Zeile in deinem php.ini unkommentiert ist:

%Vor%

Es wäre auch ratsam, mysqli oder PDO statt ( mysql_ ist veraltet ), beide können sich um die Flucht kümmern.

    
Vyktor 13.12.2012, 09:24
quelle
1

Interessanterweise habe ich nach der Erkundung aller anderen Lösungen erkannt, dass das Problem tatsächlich darin liegt, dass die Erweiterung php5-mysql noch nicht installiert wurde - sie wird nicht standardmäßig auf einem neuen Ubuntu installiert, auch nicht bei der Installation von frischem PHP. Also, für mich wurde die Lösung: Installieren Sie die Erweiterung php5-mysql:

%Vor%

Danach habe ich diese fiesen mysql_ * -Fehler nicht mehr bekommen; -)

    
nemesisfixx 24.07.2015 08:49
quelle
0

Vielleicht liegt dein Problem in der PHP-Server-Konfiguration (Kompilieren).

Hier finden Sie weitere Informationen zum mysql_real_escape_string: Ссылка

    
shinosn 13.12.2012 09:32
quelle
0

MySQL-Erweiterung ist seit PHP 5.5 veraltet. mysql_real_escape_string () ist daher in PHP 7 nicht verfügbar. Dies bedeutet, dass Benutzereingaben nicht korrekt maskiert werden können und der Code für SQL-Injection-Angriffe offen bleibt.

Die PHP-offizielle Lösung besteht darin, ext / mysql durch MySQLi, PDO oder eine andere unterstützte Datenbankerweiterung zu ersetzen.

Um SQL-Injection-Angriffe zu verhindern, wird empfohlen, vorbereitete Anweisungen zu verwenden und parametrisierte Abfragen , wenn Sie mit der Datenbank sprechen.

    
Kristoffer Bohmann 21.02.2016 13:15
quelle
0

In meinem Fall habe ich mysqli_real_escape_string anstelle von mysql_real_escape_string verwendet.

    
speksy 02.04.2018 10:14
quelle

Tags und Links