Maison >développement back-end >tutoriel php >Solution à l'erreur fatale PHP : appel à la fonction non définie mysql_real_escape_string()

Solution à l'erreur fatale PHP : appel à la fonction non définie mysql_real_escape_string()

王林
王林original
2023-06-22 12:37:051460parcourir

PHP est un langage de script open source largement utilisé pour le développement Web. Cependant, les développeurs sont souvent confrontés à diverses erreurs et problèmes lorsqu'ils utilisent PHP pour le développement Web. Parmi eux, un problème courant est « Erreur fatale PHP : appel à une fonction non définie mysql_real_escape_string() ».

Dans cet article, nous discuterons des causes et des solutions de cette erreur.

Raison :

L'extension MySQLi est une extension de base de données plus puissante qui a remplacé l'extension MySQL en PHP après la version 5.5. Si vous utilisez la fonction mysql_real_escape_string() lors de l'utilisation de l'extension MySQLi, l'erreur suivante se produira :

Erreur fatale PHP : appel à la fonction non définie mysql_real_escape_string()

C'est parce que la fonction mysql_real_escape_string() est une fonction de l'extension MySQL. . Non inclus dans l'extension MySQLi.

Solution :

1. Remplacer la fonction

Pour résoudre ce problème, vous devez d'abord remplacer la fonction mysql_real_escape_string() par la fonction mysqli_real_escape_string(), car c'est une fonction de l'extension MySQLi. Par exemple :

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

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

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

Cette méthode est relativement simple, mais elle nécessite beaucoup de modifications de code et ne convient pas aux projets déjà implémentés.

2. Utiliser le mode de compatibilité MySQL

Si votre projet utilise le mode de compatibilité MySQL, vous pouvez activer le mode de compatibilité MySQL en ajoutant un paramètre lors de la connexion à la base de données. Par exemple :

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

Cette méthode Les versions plus récentes de PHP s'exécutent en mode compatible MySQL, mais peuvent provoquer d'autres problèmes.

3. Installez l'extension MySQL

Si votre projet doit utiliser la fonction mysql_real_escape_string(), le meilleur moyen est d'installer l'extension MySQL. Pour ce faire, vous devez manipuler le système d'exploitation pour installer l'ancienne extension MySQL.

Pour les systèmes Ubuntu et Debian, l'extension peut être installée en exécutant la commande suivante :

sudo apt-get install php5-mysql

Pour les systèmes RHEL et CentOS, l'extension peut être installée en exécutant la commande suivante :

sudo yum install php-mysql

4. Mettez à niveau le projet

Lors de la mise à niveau du projet, pensez à remplacer la fonction mysql_real_escape_string() par l'alternative sûre fournie par PDO. Par exemple :

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

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

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

La méthode ci-dessus peut fournir une sécurité élevée, mais elle nécessite une compréhension complète du PDO, ce qui nécessite du temps et des efforts supplémentaires.

Résumé :

Erreur fatale PHP : l'appel à la fonction non définie mysql_real_escape_string() est une erreur courante, mais il existe plusieurs solutions. Avant de vous engager dans un correctif, vous devez prendre en compte les extensions de base de données utilisées dans votre projet et tester toutes les solutions pour vous assurer qu'elles n'ont pas d'effets secondaires évidents.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn