begin process at 2012 05 31 06:47:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Probleme d'apostrophe sur un UPDATE


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme d'apostrophe sur un UPDATE

lundi 9 février 2009 à 14:46:43 | Probleme d'apostrophe sur un UPDATE

gorc

Bonjour j'ai un problème pour l'update de données d'une base sql via un menu déroulant, l'affichage se fait correctement, la creation de la base aussi sans probleme mais quand j'update il coupe la donnée au niveau du ' ... voilà le code :
Sur la 1ere page avec menu deroulant :
[code]
                  <td><?php
                      $sql = @mysql_connect(localhost,root,"");
                      @mysql_select_db("annuaire");
                      $query  = "SELECT libelle FROM services" ;
                      $req = mysql_query($query);
                    if ($num=mysql_num_rows($req) >0)
                    {
                         echo "<select name='serv'><OPTION value='".$result->service."'>".$result->service."</OPTION>";
                         while($row = mysql_fetch_array($req))
                             {
                                 echo "<option value='$row[0]'> $row[0] </OPTION>";
                             }
                         echo "</SELECT>";
                    }?></td>
[/code]

Sur la 2em page :

[code]
$serv = $_POST["serv"];
  $serv=addslashes($serv);
  $sql = "UPDATE users
            SET
          service = '$serv'
           WHERE id = '$id' " ;
[/code]

Le code marche tres bien si il n'y a pas d'apostrophe.
Merci de votre aide.
Fabien.
lundi 9 février 2009 à 15:09:20 | Re : Probleme d'apostrophe sur un UPDATE

Polack77

Bonjour,
Je ne fait pas de PHP donc ma réponse sera théorique dzl

Si une données d'une chaine de caractère d'une requête SQL contiens des apostrophes, alors il faut les doubler.
Par exemple :
"SELECT * FROM ma_table WHERE phrase = 'Ma phrase sans apostrophe' ;" fonctionnera
Alors que :
"SELECT * FROM ma_table WHERE phrase = 'Ma phrase avec cette saleté d'apostrophe' ;" ne fonctionnera pas
Il faut le doubler :
"SELECT * FROM ma_table WHERE phrase = 'Ma phrase avec cette saleté d''apostrophe' ;" fonctionne (et la base n'écrira d'un seul apostrophe dans les données, pour écrire 2 apostrophe dans ta base il en faut 4 dans la requête ainci de suite)

Perso quand j'insère des chaines de carac dans mes requêtes je fait toujours (même quand c'est inutile)
(Code VB)
 replace(ValeurText,"'","''")

Voila en éspérant répondre à ta question

 Amicalement
lundi 9 février 2009 à 17:10:50 | Re : Probleme d'apostrophe sur un UPDATE

gorc

Salut Polack77 et merci de ton interet,
Le probleme est que dans le cas de la creation et de la modification de la table je n'ai pas de probleme car j'utilise addslashes($valeur), j'en ai uniquement dans le cas present : le menu deroulant et les apostrophes .
J'ai tenté de rajouter un addslashes dans la boucle du menu et il me sors ça en valeur :
texte avant \
Pour faire plus simple un exemple , si la valeur est : "D'information" sur l'affichage du menu il me met bien "D'information" mais quand je passe a l'update il me met : "D\"
Et si je ne met pas le addslashes dans la boucle il me met juste le "D" dans la table.

Help
lundi 9 février 2009 à 17:37:56 | Re : Probleme d'apostrophe sur un UPDATE

Polack77

Juste de D dans la table sa me parait normal (la marque de fin de chaine étant le ' en SQL, encore que perso je reçois une erreur dans ce cas )

Par contre que le SGBD inscrive D\ dans la table c'est plus étrange (heeee la chaine ne contiens que D\ ??? Dans ce cas vérifie magic_quotes_sybase, source : ici)

Ce qui m'étonne le plus c'est que tu ne rencontre pas de plantage à l'execution de cette requete à tu désactivé le retour des erreurs ?

Si non au lieu de faire un addslashes essai de remplacé l'apostrophe par deux apostrophes en debug juste pour voire ce qui se passe (soit "D''information")

Bon courage et bonne prog
 Amicalement
lundi 9 février 2009 à 17:42:46 | Re : Probleme d'apostrophe sur un UPDATE

Polack77

mysql_real_escape_string tu connais ?
Il semblerais que sa soit plus efficace que addslashes dans le cas de MySQL
Source ici
Recherche Google <mysql apostrophe> 1ér réponse
Google est ton amis

 Amicalement
vendredi 20 février 2009 à 16:19:35 | Re : Probleme d'apostrophe sur un UPDATE

gorc

Salut, excuse moi pour le temps de réponse j'étais en voyage ^^
Alors pour commencer google est mon meilleur amis et je ne me permettrais pas de poster ici sans avoir passer 2jours minimum a éplucher google :)
J'ai déjà tenté mysql_real_escape_string et ça n'a pas marche non plus.
Mon problème n'est pas général , les créations et modification par champs de texte fonctionne, c'est les modification par menu déroulant qui pètent un câble et me vire ce qu'il y a après l'apostrophe.
Sinon magic quotes est a 0 .
Need help , merci :(
vendredi 20 février 2009 à 16:44:35 | Re : Probleme d'apostrophe sur un UPDATE

Polack77

Bonjour,
2 jours !?!? (moi c'est plutôt une demi journée , voir 2 heures )
(Ton voilage c'est bien passé j'espère )

Comme je l'es dit plus haut je ne connais pas bien le PHP (mais le SQL oui )

A tu la possibilité d'extraire de ton programme les requêtes réellement envoilé à la base (Si oui peut tu les posté ici ? Sa serais l'idéale pour trouvé la source de ton problème je pense) ? Avec un message box au lieu de la fonction d'exécution de la requête par exemple .
A tu testé le "doublage" des apostrophes (soit une donnée de ce style : "D''information", moi je fait tout le temps comme sa et je n'est jamais de problème, néanmoins ta requête devrais fonctionné avec un "\'" vue qu'il semblerais que c'est la façon de faire pour MySQL source)?
Peut tu récup le code de retour de la fonction d'exécution de requête (à tu désactivé les erreurs ou peut être à tu besoin d'une fonction du genre de GetLastError (API windows)) ?
Ce qui m'étonne le plus c'est justement que tu n'est pas de code d'erreur en retour

 Amicalement
vendredi 20 février 2009 à 16:48:52 | Re : Probleme d'apostrophe sur un UPDATE

Polack77

J'y pense :
Ta chaine ne passerais pas deux fois dans la fonction mysql_real_escape_string car si oui la requête exécuté serais alors : "D\\\'information" (même si dans ce cas tu devrais avoir dans ta base "D\'information") ???
Tu problème est tres étrange (je trouve) en tout cas ???

 Amicalement
vendredi 20 février 2009 à 16:50:50 | Re : Probleme d'apostrophe sur un UPDATE

gorc

Avec un mysqltop je dois la voir passer oui je tenterais ça lundi, je n'ai pas acces a mon serveur d'ici , il va faloir attendre que je rentre au taf :)
Merci en tout cas de ton aide.
Le plus bizare en fait c'est que meme l'affichage de la requete marche bien, on dirait que le select du menu deroulant me coupe la valeur avec ou sans les \
A lundi ;)
vendredi 20 février 2009 à 16:51:42 | Re : Probleme d'apostrophe sur un UPDATE

Polack77

Puffffff décidément c'est la journée des oublies
Quel est le type de ta donnée en base ?
Y à t'il un cast à un moment ou un autre ?
Si oui retire le (ou modifi le). Si non ajoute en un

Bonne prog et bon week-end (dans 45 min pour moi )

 Amicalement

1 2 3

Cette discussion est classée dans : code, mysql, probleme, update, serv


Répondre à ce message

Sujets en rapport avec ce message

UPDATE mystérieux [ par Hicks ] Salut les gars , c surement une question bateau que vous avez l'habitude de voir mais voila : je fais un update sur une base mysql en envoyant les rés Probleme avec Update [ par shadow1779 ] bonjour,j'essai de faire une requete update sur une table, la table existe et le pseudo aussi mais j'ai une erreur, et je ne vois pas le probleme de s update une table mysql via php [ par kaddouremna28 ] salut à tous, j'ai un problème de mise a jour d'une table mysql via php et voici le code :UPDATE table SET num='$num', nom='$nom' WHERE code='$code'j' probleme de code [ par kaygee ] Salut, je suis en train de tester un tuto sur la pagination et j'ai cette erreurWarning : mysql_num_rows(): supplied argument is not valid MYSQL rsult Par défaut [MySQL] Probleme insertion d un champ dans ma base ! [ par dekovince ] Bonjour a tous !!Alors voila je suis bloqué, et j ai beau chercher je ne trouve pas !!En faite j ai un formulaire qui apres verification va dans une t probleme d'update [ par rymoucha ] bonjour,     j'ai ecris un code me permettant de faire de modifier des champs d'une table. le probleme, c'est que quand la requete s'execute, je ne re Multiplication dans une requête MySQL. Problème [ par arbilus ] Bonjour, je viens d'obtenir un script sympas pour avoir un jeux de poker. Seulement je me trouve face à un problème, en prenant large voici le code qu serveur [ par eva4 ] Bonjour, Je viens de creer un petit serveur local. Apache, mysql, phpmyadmin etc.... quand je tape dans mon navigateur localhost/document/zezette.ph MYSQL vers EXCEL [ par quinton75 ] Je souhaite exporter ma table sql vers excel via une requete php avec le code suivant mais ça ne marche pas.. Je souhaite en fait générer le fichier modifier n'a marché qu'une fois [ par caro71ol ] j'ai la fonction suivante qui est parmie tant d'autre qui appelle le fichier modifhoraire.php, qui fait la mise à jour. La modification s'est effectué


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,374 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales