mysqli::real_escape_string
mysqli_real_escape_string
(PHP 5)
mysqli::real_escape_string -- mysqli_real_escape_string — Protège les caractères spéciaux d'une chaîne pour l'utiliser dans une requête SQL, en prenant en compte le jeu de caractères courant de la connexion
Description
Style orienté objet
$escapestr
)Style procédural
Cette fonction est utilisée pour créer une chaîne SQL valide qui pourra être utilisée dans une requête SQL. La chaîne de caractères escapestr est encodée en une chaîne SQL échappée, en tenant compte du jeu de caractères courant de la connexion.
Securité : Le jeu de caractères par défaut
Le jeu de caractères doit être défini soit au niveau serveur, soit avec la fonction API mysqli_set_charset() pour qu'il affecte la fonction mysqli_real_escape_string(). Voir la section sur les concepts on des jeux de caractères pour plus d'informations.
Liste de paramètres
-
link
-
Seulement en style procédural : Un identifiant de lien retourné par la fonction mysqli_connect() ou par la fonction mysqli_init()
-
escapestr
-
La chaîne de caractères à échapper.
Les caractères encodés sont NUL (ASCII 0), \n, \r, \, ', ", and Control-Z.
Valeurs de retour
Retourne une chaîne de caractères échappée.
Exemples
Exemple #1 Exemple avec mysqli::real_escape_string()
<?php $mysqli = new mysqli("localhost", "my_user", "my_password", "world"); /* Vérification de la connexion */ if (mysqli_connect_errno()) { printf("Échec de la connexion : %s\n", mysqli_connect_error()); exit(); } $mysqli->query("CREATE TEMPORARY TABLE myCity LIKE City"); $city = "'s Hertogenbosch"; /* Cette requête échoue car nous n'avons pas échappé $city */ if (!$mysqli->query("INSERT into myCity (Name) VALUES ('$city')")) { printf("Erreur : %s\n", $mysqli->sqlstate); } $city = $mysqli->real_escape_string($city); /* Cette requête, par contre, réussira car nous avons échappé $city */ if ($mysqli->query("INSERT into myCity (Name) VALUES ('$city')")) { printf("%d ligne insérée.\n", $mysqli->affected_rows); } $mysqli->close(); ?>
<?php $link = mysqli_connect("localhost", "my_user", "my_password", "world"); /* Vérification de la connexion */ if (mysqli_connect_errno()) { printf("Échec de la connexion : %s\n", mysqli_connect_error()); exit(); } mysqli_query($link, "CREATE TEMPORARY TABLE myCity LIKE City"); $city = "'s Hertogenbosch"; /* Cette requête échoue car nous n'avons pas échappé $city */ if (!mysqli_query($link, "INSERT into myCity (Name) VALUES ('$city')")) { printf("Erreur : %s\n", mysqli_sqlstate($link)); } $city = mysqli_real_escape_string($link, $city); /* Cette requête, par contre, réussira car nous avons échappé $city */ if (mysqli_query($link, "INSERT into myCity (Name) VALUES ('$city')")) { printf("%d ligne insérée.\n", mysqli_affected_rows($link)); } mysqli_close($link); ?>
Les exemples ci-dessus vont afficher :
Erreur : 42000 1 ligne insérée.
Notes
Note:
Si vous êtes habitués à utiliser la fonction mysql_real_escape_string(), notez que les arguments de la fonction mysqli_real_escape_string() ne sont pas identiques à ceux de la fonction mysql_real_escape_string(). L'identifiant
link
est le premier argument pour la fonction mysqli_real_escape_string(), alors que la chaîne à échapper est le premier argument pour la fonction mysql_real_escape_string().
Voir aussi
- mysqli_set_charset() - Définit le jeu de caractères par défaut du client
- mysqli_character_set_name() - Retourne le jeu de caractères courant pour la connexion