downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

mysqli::real_query> <mysqli::real_connect
[edit] Last updated: Fri, 17 May 2013

view this page in

mysqli::real_escape_string

mysqli_real_escape_string

(PHP 5)

mysqli::real_escape_string -- mysqli_real_escape_stringProtè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

string mysqli::escape_string ( string $escapestr )
string mysqli::real_escape_string ( string $escapestr )

Style procédural

string mysqli_real_escape_string ( mysqli $link , string $escapestr )

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.

Attention

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()

Style orienté objet

<?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();
?>

Style procédural

<?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::real_query> <mysqli::real_connect
[edit] Last updated: Fri, 17 May 2013
 
add a note add a note User Contributed Notes mysqli::real_escape_string - [5 notes]
up
6
arnoud at procurios dot nl
8 years ago
Note that this function will NOT escape _ (underscore) and % (percent) signs, which have special meanings in LIKE clauses.

As far as I know there is no function to do this, so you have to escape them yourself by adding a backslash in front of them.
up
2
Josef Toman
3 years ago
For percent sign and underscore I use this:
<?php
$more_escaped
= addcslashes($escaped, '%_');
?>
up
6
tobias_demuth at web dot de
7 years ago
Note, that if no connection is open, mysqli_real_escape_string() will return an empty string!
up
2
dave at mausner.us
2 years ago
You can avoid all character escaping issues (on the PHP side) if you use prepare() and bind_param(), as an alternative to placing arbitrary string values in SQL statements.  This works because bound parameter values are NOT passed via the SQL statement syntax.
up
0
vita dot plachy at seznam dot cz
5 years ago
The above can be managed by the following function:

<?php
function search_escape($str, $char = '\\')
{
    return
ereg_replace('[%_]', $char . '\0', $str);
}
?>

 
show source | credits | stats | sitemap | contact | advertising | mirror sites