Ich verwende PHP Version 5.3 und versuche, mysql_real_escape_string($unescaped_string)
in meinem Code zu verwenden, aber ich erhalte den Fehler:
Fatal error: Call to undefined function mysql_real_escape_string()
in /var/www/engine/database.php on line 38
Ich kann jedoch immer noch eine Verbindung zur Datenbank herstellen. Warum ist es nicht verfügbar?
Ich verwende PHP Version 5.3.
Update wie in Kommentar , mysql_
wurde seit 5.5 veraltet :
Die MySQL-Erweiterung ist seit PHP 5.5 veraltet. Stattdessen sollte die Erweiterung mysqli oder PDO verwendet werden. Die Ablehnung wurde in mysql_deprecation festgelegt, wo eine Erläuterung der Gründe für diese Entscheidung zu finden ist.
und in PHP 7 entfernt.
mysql_real_escape_string()
ist Standardbestandteil von MySQL-Funktion "batch" und sollte immer funktionieren, wenn die Erweiterung korrekt geladen wird.
Funktioniert eine andere mysql_
-Funktion? (Es sollte nicht)
Stellen Sie sicher, dass diese Zeile in Ihrem php.ini
unkommentiert ist:
extension=mysql.so
Es wäre auch ratsam, stattdessen mysqli
oder PDO
zu verwenden ( mysql_
ist veraltet ). Beide können sich um Sie kümmern.
In meinem Fall habe ich mysqli_real_escape_string
anstelle von mysql_real_escape_string
verwendet.
Interessanterweise erkannte ich alle anderen Lösungen hier und stellte fest, dass das Problem tatsächlich auf die php5-mysql
-Erweiterung zurückzuführen ist, die noch nicht installiert wurde - sie wird nicht standardmäßig auf einem neuen Ubuntu installiert, auch wenn Sie frischen PHP installieren. Für mich war die Lösung also: Installiere die php5-mysql-Erweiterung:
Sudo apt-get install php5-mysql
Danach bekam ich diese fiesen mysql_ * -Fehler nicht mehr ;-)
Möglicherweise liegt Ihr Problem in der PHP-Server-Konfiguration (Kompilieren).
Weitere Informationen zum mysql_real_escape_string: http://www.php.net/manual/en/function.mysql-real-escape-string.php
Die MySQL-Erweiterung ist seit PHP 5.5 veraltet. mysql_real_escape_string () ist daher nicht in PHP 7 verfügbar. Dies bedeutet, dass Benutzereingaben nicht korrekt mit Escapezeichen versehen werden können und den Code für SQL-Injection-Angriffe offen lassen.
Die offizielle PHP-Lösung ist ersetzt ext/mysql durch MySQLi, PDO oder eine andere unterstützte Datenbankerweiterung.
Um SQL-Injection-Angriffen vorzubeugen, wird empfohlen, vorbereitete Anweisungen und parametrisierte Abfragen zu verwenden, wenn Sie mit der Datenbank sprechen.