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. 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
    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
        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. 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()…
        2. 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' 
        3. 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
        4. 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…
        5. 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