webentwicklung-frage-antwort-db.com.de

mysql_real_escape_string ist nicht definiert

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.

11
MichaelH

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.

18
Vyktor

In meinem Fall habe ich mysqli_real_escape_string anstelle von mysql_real_escape_string verwendet.

2
speksy

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 ;-)

1
nemesisfixx

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

0
shinosn

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.

0