Version complète: sur le forum Webmaster Hub : mysql et addslashes
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > SQL
cybrnetik
Bonjour,
J'ai une base de donnes qui me pose problème puisque je desire modifier certains champs afin de rajouter un anti-slash devant tout lesguillemets qui existent.
Pour cela, j'ai fait une petite page qui va me modifier ca j'affiche la valeur de la table avant et apres la modification avec ce code :
CODE
for($i=0;$i<30;$i++){
print '<strong>Avant l\'envoi</strong><br />';

        $resultat = mysql_query("
        SELECT id, texte
        FROM mabase
        WHERE id='".$i."'") or mysql_error();
        
$donnees = mysql_fetch_array($resultat);
$texte = addslashes($donnees['texte']);
print $donnees['texte'].'<br /><br /><br /><br /><br /><strong>Une fois envoyé a la base de données </strong><br />';

        mysql_query("
        UPDATE mabase
        SET texte = '".$texte."'
        WHERE id='".$donnees['id']."'") or die(mysql_error());
        
        //affichage des modif
         $resultat = mysql_query("
        SELECT texte
        FROM mabase
        WHERE id='".$i."'") or mysql_error();
        
$donnees = mysql_fetch_array($resultat);
print $donnees['texte'].'<br /><br /><br />';
}


La modification est faite comme il faut et envoyé a la base de données seulement la base de donner ne garde pas les antislash sad.gif .
Comment cela ce fait ils ?
maximettb
C'est entièrement logique, les caractères d'échappement sont supprimés dès l'insertion en BDD. Pour les garder dans ta base, il faut normalement faire un 2ème addslashes :
$texte = addslashes(addslashes($donnees['texte']));
petit-ourson
Il est recommandé d'utiliser mysql_escape_string au lieu de addslashes pour insérer des données en base.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.