Caracteres " ' " en SQL + PHP

DAG -  
oscarapace Messages postés 58 Statut Membre -
Bonjour,
J'ai un petit soucis. Je souhaite faire un INSERT dans une base MySQL en PHP.
Le problème est qu'il y a des caractères " ' " dans mes valeurs... Par exemple "L'HOMME'.
Donc forcément, j'ai des erreurs...
J'ai utilisé str_replace de la façon suivante :
INSERT INTO maTable (Champs) VALUES '$data[NOM]=str_replace("'","\'",$data[NOM])';

Mais lorsque j'exécute ma requête, je retrouve dans ma base les "\". Ce qui est normal !

J'aimerais savoir s'il n'y aurait pas une façon de contourner cette erreur ?

Merci d'avance !

7 réponses

  1. CaPiT Messages postés 622 Statut Membre 51
     
    Bonjour,

    en fait il faut que tu fasses une p'tite combine, qui va te rajouter/enlever des slashs devant tes caractères spéciaux.
    $champs = addslashes($champs); 
    
    INSERT INTO maTable (Champs) VALUES ' " .champs. " ';
    
    Par la suite pour tes SELECT, tu feras:
    
    $champs = stripslashes($champs); 


    Voilà.
    0
  2. DAG
     
    Ok, merci pour la réponse.
    J'essaierais ça demain car la je commence à en avoir marre ! Je rentre chez moi !! ;-)

    Je te dirais si j'y arrive
    0
  3. DAG
     
    Juste avant de partir, j'avais vu une fonction <code mysql_real_escape_string</code>.
    Ca pourrait marcher avec ça aussi non ?
    0
    1. toto
       
      Bonjour

      Oui ça marche, ça sert même précisément à ça. En plus, ça résout d'autres cas que celui de l'apostrophe (retour chariot/fin de ligne par exemple), et tu n'as pas de stripslashes à faire quand tu relis tes champs.
      Tout bénef.
      0
      1. CaPiT Messages postés 622 Statut Membre 51 > toto
         
        Autant pour moi alors. Je ne l'utilise pas.
        0
  4. CaPiT Messages postés 622 Statut Membre 51
     
    Non je ne penses pas ;) Ca sert à autre chose.

    N'oublies pas de mettre "Résolu" si ça fonctionne.

    Bonne fin de journée.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. DAG
     
    Bon ça fonctionne, merci beaucoup.
    C'est un peu contraignant je trouve, car il faut l'utiliser pour toutes les requetes SQL (et j'en est beaucoup : une centaine entre les INSERT, UPDATE et les SELECT), mais ça marche !

    Merci encore et A+
    0
  7. CaPiT Messages postés 622 Statut Membre 51
     
    Bah tu les mets juste pour les champs textes, et pas les autres. Après si tu as énormement de champs, c'est sur c'est contraignant.
    0
  8. oscarapace Messages postés 58 Statut Membre 14
     
    sinon si tu utilise la librairie adodb pour connecter php à ta base de données, elle dispose d'une fonction (qstr) qui permet de gérer automatiquement les caractères à mettre entre guillemets ou pas. tu passes tout par cette fonction et comme ça tu es sur de ne jamais avoir de soucis
    0