Requete SQL et quotes

Bonjour,ma question est vraiment idiote :)

Je voudrais faire une requête SQL sans faire de addslashes, comment faut-il écrire la requête ?

exemple :

$chaine = "texte d'emple avec d'es quotes";

$sql2="UPDATE liste_texte
SET texte ='$chaine'
WHERE id_texte ='25'";

Merci d'avance !
Configuration: Windows XP
Firefox 3.0.11

8 réponses

  1. oui mais excuse moi quand je vois des dollards devant des variables, je dirai pas que c'est du Mysql au sens propre

    $chaine <== tu m'excusera mais c'est du PHP.
    meme si on appel du SQL par derrière ensuite

    1. Ca c'est une erreur mysql, je te demande si en PHP ca ne passe pas...
      car mois ca fonctionne sans soucis...
      1. Contributeur
        Ca c'est une erreur mysql, je te demande si en PHP ca ne passe pas...
        et t'as pas l'impression que le sujet de la discussion c'est SQL et pas PHP ?
        Je voudrais faire une requête SQL sans faire de addslashes, comment faut-il écrire la requête ?

        autrement dit, on s'en tape de la gestion des quotes en PHP…
    2. Provoque t'il une erreur ?? parce que moi non, ma base, prend correctement les données...
      1. Contributeur
        #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'emple avec d'es quotes' '' at line 1
    3. nagatif si tu regarde bien la structure ceci donne :

      UPDATE liste_texte SET texte ="texte d'emple avec d'es quotes" WHERE id_texte ='25'

      et non

      UPDATE liste_texte SET texte ='texte d'emple avec d'es quotes' WHERE id_texte ='25'

      voila pourquoi PHP exige la double notation '"

      1. Contributeur
        gondoles, Venise, printemps, tamise…
        le copier/coller de ton code, plus un echo() :
        <?php
        $chaine = "texte d'emple avec d'es quotes";
        $sql2="UPDATE liste_texte
        SET texte ='".$chaine."'
        WHERE id_texte ='25' ";
        echo $sql2;
        ?>

        sortie :
        UPDATE liste_texte
        SET texte ='texte d'emple avec d'es quotes'
        WHERE id_texte ='25' 
    4. tu dois l'écrire comme sa :

      $chaine = "texte d'emple avec d'es quotes";

      $sql2="UPDATE liste_texte
      SET texte ='".$chaine."'
      WHERE id_texte ='25' ";
      1. Contributeur
        ce qui nous donne la requête :
        UPDATE liste_texte SET texte ='texte d'emple avec d'es quotes' WHERE id_texte ='25'

        et donnera une belle erreur puisque l'apostrophe de la phrase va fermer l'apostrophe de la requête, d'où l'intérêt d'échapper les apostrophes avec une fonction comme addslashes()…
    5. Contributeur
      il faut utiliser une fonction pour protéger la BDD, donc addslashes() ou mieux mysqli_real_escape_string().
      si tu utilises un PHP > 5.2 tu peux utiliser PDO avec PDO::prepare().

      si tu as des slashes en trop à l'affichage, suffit de nettoyer la chaîne avec stripslashes() avant d'afficher.
      1. Oui mais ma chaine n'est pas tout le temps la même. Le addslashes va rajouter des slashes en table ? En faite il ne doit pas y avoir dans la table, il doit bien y avoir une écriture lors de la requete update spécifique non ?
        1. Contributeur
          salut,

          Je voudrais faire une requête SQL sans faire de addslashes, comment faut-il écrire la requête ?
          heu…
          ben en ajoutant les slashes à la main !
          $chaine = "texte d'emple avec d\'es quotes"; 

          effectivement, drôle de question…
          -:oD