unsigned long mysql_real_escape_string(MYSQL *mysql,
char *en, const char *de, unsigned long longueur)
Description
Cette fonction est utilisée pour créer une requête SQL légale que vous pouvez utiliser dans une commande SQL. See Section 9.1.1, « Chaînes ».
La string dans de
est encodée en chaîne
échappé SQL, prenom en compte le jeu de caractères de la
connexion. Le résultat est placé dans en
et un octet nul de terminaison est ajouté à la fin de
celui-ci. Les caractères encodés sont NUL
(ASCII 0), ‘\n
’,
‘\r
’,
‘\
’,
‘'
’,
‘"
’, et Ctrl-Z (see
Section 9.1, « Littéraux : comment écrire les chaînes et les nombres »). (En fait, MySQL a seulement
besoin que l'anti-slash et le guillemet utilisé pour entourer
la chaîne soient échappés. Cette fonction échappe les
autre caractères pour les rendre plus facile à lire dans les
fichiers de log.)
La chaîne pointée par de
doit avoir une
taille de longueur
octets. Vous devez
allouer à l'espace de en
au moins
longueur*2+1
octets. (Dans le pire des cas,
chaque caractère devra être encodé en utilisant deux
octets, et vous avez besoin de place pour l'octet nul de
terminaison.) Lorsque mysql_escape_string()
retourne un résultat, le contenu de en
sera une chaîne terminée par un caractère nul. La valeur de
retour est la longueur de la chaîne encodée, n'incluant pas
le caractère nul de terminaison.
Exemple
char query[1000],*end; end = strmov(query,"INSERT INTO test_table values("); *end++ = '\''; end += mysql_real_escape_string(&mysql, end,"C'est quoi ¸a",11); *end++ = '\''; *end++ = ','; *end++ = '\''; end += mysql_real_escape_string(&mysql, end,"donnée binaire : \0\r\n",16); *end++ = '\''; *end++ = ')'; if (mysql_real_query(&mysql,query,(unsigned int) (end - query))) { fprintf(stderr, "Impossible d'insérer la ligne, erreur : %s\n", mysql_error(&mysql)); }
La fonction strmov()
utilisée dans cet
exemple est inclue dans la bibliothèque
mysqlclient
et fonctionne comme
strcpy()
mais retourne un pointeur sur le
nul de fin du premier paramètre.
Valeur de retour
La longueur de la valeur passée dans to
,
n'incluant pas la caractère nul de fin de chaîne.
Erreurs
Aucune.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.