Heim  >  Artikel  >  Backend-Entwicklung  >  Lösung für PHP Schwerwiegender Fehler: Aufruf der undefinierten Funktion mysql_real_escape_string()

Lösung für PHP Schwerwiegender Fehler: Aufruf der undefinierten Funktion mysql_real_escape_string()

王林
王林Original
2023-06-22 12:37:051392Durchsuche

PHP ist eine weit verbreitete Open-Source-Skriptsprache für die Webentwicklung. Allerdings stoßen Entwickler bei der Verwendung von PHP für die Webentwicklung häufig auf verschiedene Fehler und Probleme. Ein häufiges Problem ist „Schwerwiegender PHP-Fehler: Aufruf der undefinierten Funktion mysql_real_escape_string()“.

In diesem Artikel besprechen wir die Ursachen und Lösungen dieses Fehlers.

Grund:

Die MySQLi-Erweiterung ist eine leistungsfähigere Datenbankerweiterung, die die MySQL-Erweiterung in PHP nach Version 5.5 ersetzt. Wenn Sie bei Verwendung der MySQLi-Erweiterung die Funktion mysql_real_escape_string() verwenden, tritt der folgende Fehler auf:

PHP Schwerwiegender Fehler: Aufruf der undefinierten Funktion mysql_real_escape_string()

Dies liegt daran, dass die Funktion mysql_real_escape_string() eine Funktion der MySQL-Erweiterung ist . Nicht in der MySQLi-Erweiterung enthalten.

Lösung:

1. Funktion ersetzen

Um dieses Problem zu lösen, müssen Sie zunächst die Funktion mysql_real_escape_string() durch die Funktion mysqli_real_escape_string() ersetzen, da es sich um eine Funktion der MySQLi-Erweiterung handelt. Zum Beispiel:

$mysqli = new mysqli('localhost', 'username', 'password', 'database_name');

$name = mysqli_real_escape_string($mysqli, $_POST['name']);

$ email = mysqli_real_escape_string($mysqli, $_POST['email']);

Diese Methode ist relativ einfach, erfordert jedoch viele Codeänderungen und ist nicht für bereits implementierte Projekte geeignet.

2. MySQL-Kompatibilitätsmodus verwenden

Wenn Ihr Projekt den MySQL-Kompatibilitätsmodus verwendet, können Sie den MySQL-Kompatibilitätsmodus aktivieren, indem Sie beim Herstellen einer Verbindung zur Datenbank einen Parameter hinzufügen. Zum Beispiel:

$mysqli = new mysqli('localhost', 'username', 'password', 'database_name', NULL, '/path/to/mysql/socket', MYSQLI_CLIENT_COMPRESS | MYSQL_CLIENT_IGNORE_SPACE);

Diese Methode wird sorgt dafür, dass neuere Versionen von PHP im MySQL-kompatiblen Modus ausgeführt werden, kann aber andere Probleme verursachen.

3. Installieren Sie die MySQL-Erweiterung

Wenn Ihr Projekt die Funktion mysql_real_escape_string() verwenden muss, ist es am besten, die MySQL-Erweiterung zu installieren. Dazu müssen Sie das Betriebssystem manipulieren, um die ältere MySQL-Erweiterung zu installieren.

Für Ubuntu- und Debian-Systeme kann die Erweiterung durch Ausführen des folgenden Befehls installiert werden:

sudo apt-get install php5-mysql

Für RHEL- und CentOS-Systeme kann die Erweiterung durch Ausführen des folgenden Befehls installiert werden:

sudo yum install php-mysql

4. Aktualisieren Sie das Projekt

Erwägen Sie beim Aktualisieren des Projekts, die Funktion mysql_real_escape_string() durch die sichere Alternative von PDO zu ersetzen. Zum Beispiel:

$dbh = new PDO('mysql:host=localhost;dbname=database_name', 'username', 'password');

$name = $dbh->quote($_POST['name' ] );

$email = $dbh->quote($_POST['email']);

Die obige Methode kann eine hohe Sicherheit bieten, erfordert jedoch ein umfassendes Verständnis von PDO, was zusätzlichen Zeit- und Arbeitsaufwand erfordert.

Zusammenfassung:

Schwerwiegender PHP-Fehler: Aufruf der undefinierten Funktion mysql_real_escape_string() ist ein häufiger Fehler, es gibt jedoch mehrere Lösungen. Bevor Sie sich zu einer Lösung verpflichten, sollten Sie die in Ihrem Projekt verwendeten Datenbankerweiterungen berücksichtigen und alle Lösungen testen, um sicherzustellen, dass sie keine offensichtlichen Nebenwirkungen haben.

Das obige ist der detaillierte Inhalt vonLösung für PHP Schwerwiegender Fehler: Aufruf der undefinierten Funktion mysql_real_escape_string(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn