W3docs

real_escape_string

In this article, we will discuss the mysqli_real_escape_string() function in PHP, which is used to escape special characters in strings that will be used in SQL

Dans cet article, nous examinerons la fonction mysqli_real_escape_string() en PHP, qui sert à échapper les caractères spéciaux dans les chaînes destinées aux requêtes SQL.

Introduction à la fonction mysqli_real_escape_string()

Cette fonction native de PHP échappe les caractères spéciaux dans les chaînes prévues pour des requêtes SQL. Elle permet de prévenir les attaques par injection SQL, qui surviennent lorsque des utilisateurs malveillants injectent du code SQL nuisible dans les instructions exécutées par la base de données.

Comment utiliser la fonction mysqli_real_escape_string()

L'utilisation de la fonction mysqli_real_escape_string() est simple. Voici un exemple :

<?php
$con = mysqli_connect('localhost', 'username', 'password', 'database');

if (!$con) {
    exit('Could not connect: ' . mysqli_error($con));
}

// Set charset to prevent multi-byte character vulnerabilities
mysqli_set_charset($con, 'utf8mb4');

$name = "John O'Reilly";
$name = mysqli_real_escape_string($con, $name);

$sql = "INSERT INTO customers (name) VALUES ('$name')";

if (!mysqli_query($con, $sql)) {
    exit('Error: ' . mysqli_error($con));
}

echo '1 record added';

mysqli_close($con);
?>

Dans cet exemple, nous établissons d'abord une connexion à une base de données MySQL via mysqli_connect(). Nous définissons ensuite une variable $name contenant une apostrophe. L'appel à mysqli_real_escape_string() échappe cette apostrophe, garantissant que l'instruction SQL s'exécute sans erreur de syntaxe. Nous construisons une requête INSERT sur la table customers, l'exécutons avec mysqli_query(), puis affichons un message de succès.

Remarque : Définissez toujours le jeu de caractères de la connexion (par ex. mysqli_set_charset($con, 'utf8mb4')) avant d'échapper les caractères pour éviter les vulnérabilités liées aux caractères multi-octets. Bien que cette fonction soit fonctionnelle, le développement PHP moderne recommande fortement l'utilisation de requêtes préparées avec paramètres pour une sécurité optimale.

Conclusion

La fonction mysqli_real_escape_string() reste un outil pratique pour échapper les caractères spéciaux dans les requêtes SQL. Une échappement correct des entrées utilisateur contribue à sécuriser votre application et à protéger vos données.

Pratique

Pratique

Que fait la fonction PHP mysql_real_escape_string ?