SQL grosse erreur ou mal codé ?
Anonyme
Bonjour j'ai ce code en sql :

Ch_sql2 = " UPDATE COIFFEUR "
Ch_sql2 += " SET prenom_coif= '"+paramprenom+"' , "
Ch_sql2 += " nom_coif = '"+paramnom+"' , "
Ch_sql2 += " adr1_coif = '"+paramadr1+"' , "
Ch_sql2 += " adr2_coif = '"+paramadr2+"' , "
Ch_sql2 += " cp_coif = '"+paramcp+"' , "
Ch_sql2 += " ville_coif= '"+paramville+"' , "
Ch_sql2 += " portable_coif= '"+paramportable+"' ,"
Ch_sql2 += " tel_coif = '" +paramtel+"' , "
Ch_sql2 += " fonction_coif= '"+paramfonction+"' ,"
Ch_sql2 += " numsecu_coif= '"+paramsecu+"'"

SI SQLExec(Ch_sql2,"R2") = Vrai ALORS
Info("Données enregistrées !")
SINON
SQLInfoGene("R2")
Erreur(ExceptionInfo(errCode),ExceptionInfo(errMessage))
FIN


Ce code fonctionne si par exemple la rue = rue jeanne darc mais jeanne d'arc ne passe pas !!
j'en conclu que l'apostrophe ne passe pas !
qu'en pensez vous ?
merci

Contribution le : 13/01/2006 09:28
Créer un fichier PDF de la contribution Imprimer


Re: SQL grosse erreur ou mal codé ?
Utilisateur WDF
Inscrit:
28/06/2005 15:02
De Aurillac Cantal Auvergne
Post(s): 91
C'est normal, l'apostrophe est un cractère spécial avec SQL.

En gros, imagine la chose suivante.
nomRue = "Rue Jeanne d'Arc"

req = "UPDATE MonFichier SET rue = '"+nomRue+"'"

Que donne le texte de la requète au final ??
UPDATE MonFichier SET rue = 'Rue Jeanne d'Arc'

La on voit bien que ça pose un problème car la chaine a mettre dans rue serait 'Rue Jeanne d', et derriere Arc serait considéré comme une commande SQL.

La solution est d'échapper l'apostrophe, c'est à dire d'y ajouter un antislash devant (à moins que je ne me trompe, je ne suis pas sûr à 100% que le caractère d'échappement en SQL soit l'antislash).

Il faut donc modifier les textes de tes variables avant de les insérer dans ta requete :
nomRue = Remplace(nomRue, "'", "\'")

Bon dev ^^

Contribution le : 13/01/2006 09:48
_________________
La touche F1 est et restera toujours ta meilleure amie :p
Créer un fichier PDF de la contribution Imprimer


Re: SQL grosse erreur ou mal codé ?
Animateur WDF
Inscrit:
19/01/2004 13:48
De www.sigmasys.fr
Post(s): 988
Bonjour,

Exact l'apostrophe ne passe pas dans une chaine à intégrer dans une rubrique via une requête sql.
Il faut faire d'abord un remplacement de caractère avec :

cMaChaine = Remplace(cMaChaine, "'","\'")


Bon dév.,

Totof

Contribution le : 13/01/2006 09:49
_________________
[ Totof(Christophe LOGEL) réalise des développements spécifiques WinDev (Mon annonce wdforge), http://www.sigmasys.fr]
Créer un fichier PDF de la contribution Imprimer


Re: SQL grosse erreur ou mal codé ?
Bonjour,

en fait tout depend de votre base

pour mySQL il faut remplacer les ' par \'
pour SQLite ce n'est pas la peine
pour d'autre il faut la doubler ''

si votre base est HF il faut la doubler

donc suivant votre base la reponse sera differentes, il faut egalement prendre en compte les autres caracteres speciaux \ tab et autre. suivant votre base il faut les remplacer par une valeur particuliere. sur HF seul la ' pose de reel probleme

Contribution le : 13/01/2006 20:54
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2