J'utilise PHP version 5.3 et j'essaie d'utiliser mysql_real_escape_string($unescaped_string)
dans mon code, mais j'obtiens l'erreur suivante:
Fatal error: Call to undefined function mysql_real_escape_string()
in /var/www/engine/database.php on line 38
Je peux quand même me connecter à la base de données. Pourquoi n'est-il pas disponible?
J'utilise PHP version 5.3.
Update comme mentionné dans comment , mysql_
est/ obsolète depuis 5.5 :
L'extension mysql est obsolète depuis PHP 5.5. L'extension mysqli ou PDO doit être utilisée à la place. La désapprobation a été décidée dans mysql_deprecation , où une discussion des raisons de cette décision peut être trouvée.
et supprimé dans PHP 7.
mysql_real_escape_string()
est une partie standard de La fonction MySQL "batch" devrait toujours fonctionner si l'extension est chargée correctement.
Est-ce qu'une autre fonction mysql_
fonctionne? (Ça ne devrait pas)
Assurez-vous que cette ligne est commentée dans votre php.ini
:
extension=mysql.so
De plus, il serait sage d'utiliser mysqli
ou PDO
à la place ( mysql_
est obsolète ), ils peuvent tous deux prendre soin de vous échapper.
Dans mon cas, j'ai utilisé mysqli_real_escape_string
au lieu de mysql_real_escape_string
.
Fait intéressant, après avoir exploré toutes les autres solutions ici, j’ai réalisé que le problème était dû au fait que l’extension php5-mysql
n’avait pas encore été installée - elle n’est pas installée par défaut sur un nouvel Ubuntu, ni lorsque vous installez un nouveau php. Donc, pour moi, la solution est devenue: installez l'extension php5-mysql:
Sudo apt-get install php5-mysql
Après cela, je n’avais plus ces mauvaises erreurs mysql_ * ;-)
Peut-être que votre problème réside dans la configuration du serveur php (compilation).
Voici plus d'informations sur mysql_real_escape_string: http://www.php.net/manual/en/function.mysql-real-escape-string.php
L'extension MySQL est obsolète depuis PHP 5.5. mysql_real_escape_string () n'est donc pas disponible dans PHP 7. Cela signifie que les entrées utilisateur ne peuvent pas être échappées correctement et laisse le code ouvert aux attaques par injection SQL.
La solution officielle de PHP consiste à remplacer ext/mysql par MySQLi, PDO ou une autre extension de base de données prise en charge.
Pour éviter les attaques par injection SQL, il est recommandé d'utiliser les instructions préparées et les requêtes paramétrées lorsque vous parlez à la base de données.