Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1365 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Effacer les backslash dans MySQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Effacer les backslash dans MySQL

n°894332
Arkangelus
Rêveur polyvalent
Posté le 09-11-2004 à 15:05:09  profilanswer
 

Voila, j'ai un soucis. Je ne suis pas un pro des bases de données et ça fait plusieurs jours que je cherche à résoudre un problème.  
J'ai récupéré un système tout prêt qui permet d'enregistrer des news dans une BDD MySQL. Maintenant que je veux changer de système, j'ai transféré toutes mes données dans les nouvelles tables mais je me rends compte qu'il a ajouté devant chaque apostrophe un backslash "\"
Je veux les supprimer tous, mais comment faire ? Je sais changer les "toto" en "tata" mais un backslash c'est un peu différent puisque dans ma commande SQL il l'ignore. J'ai essayé de remplacer "\'", "\\'" ou juste "\" mais je ne m'en sors pas.
La réponse doit être toute simple mais je n'ai pas encore trouvé. Merci de votre aide.

mood
Publicité
Posté le 09-11-2004 à 15:05:09  profilanswer
 

n°894334
skeye
Posté le 09-11-2004 à 15:06:56  profilanswer
 

http://fr.php.net/stripslashes


---------------
Can't buy what I want because it's free -
n°894339
Arkangelus
Rêveur polyvalent
Posté le 09-11-2004 à 15:09:32  profilanswer
 

Oh merci, ça c'est une réponse rapide !  
Je ne cherchais qu'à passer par une commande SQL mais c'est vrai que par le PHP c'est déjà plus facile. Je vais faire ça

n°895231
Arkangelus
Rêveur polyvalent
Posté le 10-11-2004 à 14:33:39  profilanswer
 

Je voulais me débrouiller seul mais j'en ai marre. Je suis nul, c'est officiel. Voila encore mon problème.
Pour remplacer l'ancienne news par sa réplique sans les \, j'ai créé une page php avec toutes les données de connection et de selection habituelles.  
$row[0] est l'id de la news et $row[1] est le contenu.
Puis j'ai fait une boucle comme ceci :
 
while ($row = mysql_fetch_array($result))
 {
 $news = stripslashes($row[1]);
 echo $row[0].' - '.$news.'<br>';
 }
 
Il m'affiche parfaitement l'id suivi du contenu sans antislash. Maintenant, j'ajoute la commande SQL pour remplacer la news :
 
mysql_query("UPDATE news SET news_content = '".$row[1]."' WHERE news_id = '".$row[0]."'" ) or die("Enregistrement impossible" );
 
Mais là, erreur. Si je remplace les variables par des constantes, en dur, ça marche. Ne peut-on pas couper le code SQL par des variables ? Comment faire ? J'ai essayé plusieurs manières mais rien ne marche.


Message édité par Arkangelus le 10-11-2004 à 14:37:21
n°895304
skeye
Posté le 10-11-2004 à 15:27:56  profilanswer
 

pour ajouter, fonction inverse : addslashes...


---------------
Can't buy what I want because it's free -
n°895353
Arkangelus
Rêveur polyvalent
Posté le 10-11-2004 à 15:54:59  profilanswer
 

Heu oui merci, j'ai vu ça. Je ne cherche pas à les ajouter mais à les enlever. Non en fait, je les ai enlevé à l'affichage mais je veux les enlever définitivement de la base de données

n°895355
skeye
Posté le 10-11-2004 à 15:57:50  profilanswer
 

T'as des notions de sql? Parce-que pour supprimer on fait plutôt delete habituellement...:o
Et si tu affichais l'erreur ou la requête générée pour voir ce qui ne va pas ce serait pas mal...:o


---------------
Can't buy what I want because it's free -
n°895364
Arkangelus
Rêveur polyvalent
Posté le 10-11-2004 à 16:08:57  profilanswer
 

Comme je le disais au début, il est très simple d'effacer n'importe quel mot ou caractère, sauf pour l'antislash ! Si tu as une ligne SQL toute faite pour virer tous les antislash d'une table en une fois, je suis preneur.  
Mais comme je n'y arrivais pas, je suis passé sur ton conseil par le php avec la commande stripslashes.  
Ce que je sais en sql je l'ai appris seul donc j'essai de me débouiller pour
1) sortir une ligne de la base
2) virer les antislash
3) enregistrer la nouvelle ligne au même endroit de la base
4) passer à la suivante et recommencer jusqu'au bout de la table
 
Si tu as plus simple tu peux me le dire, je suis toujours prêt à apprendre. Mais dans mon exemple, le problème est que je n'arrive pas à enregistrer de variable dans ma base avec UPDATE. C'est de ma faute, je m'y prends mal. Comment faire alors ?

n°895383
skeye
Posté le 10-11-2004 à 16:28:58  profilanswer
 

Euh oui mais non, on fait pas comme ça normalement...[:dawa]
On ne vire les antislashes en trop qu'à l'affichage...


---------------
Can't buy what I want because it's free -
n°895407
Arkangelus
Rêveur polyvalent
Posté le 10-11-2004 à 16:47:31  profilanswer
 

Ben, je trouve ça idiot pcq je n'en ai absolument pas besoin. Pourquoi ne pourrais-je pas les supprimer de la base de données si je n'en veux plus ?

mood
Publicité
Posté le 10-11-2004 à 16:47:31  profilanswer
 

n°895412
skeye
Posté le 10-11-2004 à 16:49:40  profilanswer
 

arkangelus a écrit :

Ben, je trouve ça idiot pcq je n'en ai absolument pas besoin. Pourquoi ne pourrais-je pas les supprimer de la base de données si je n'en veux plus ?


parce-que sinon tu risques d'être surpris par le comportement de tes chaines de caractères...:o


---------------
Can't buy what I want because it's free -
n°895424
Arkangelus
Rêveur polyvalent
Posté le 10-11-2004 à 16:52:49  profilanswer
 

Avant que je change de systeme d'enregistrement, aucun antislash n'était ajouté. Donc sur une partie de ma base, il n'y en a pas. Et pourtant, ça fonctionne

n°895542
SomeBugsIn​Me
life suxx
Posté le 10-11-2004 à 18:35:50  profilanswer
 

ouais ça fonctionne peut-être pour l'instant.
 
Mais si tes enregistrements contiennent des ' ou " , tu risques d'avoir des surprises.

n°1837833
grosbin
OR die;
Posté le 14-01-2009 à 14:39:05  profilanswer
 

bonjour je cherche à rechercher "WHERE champ like('%\\%')"
le backslash échappant les caractères je me retrouve à rechercher ce qui finit par un pourcentage .. qq'un a une idée ?


---------------
Photos Panoramiques Montagnes Haute Savoie
n°2006155
letto
Posté le 30-06-2010 à 22:09:09  profilanswer
 

En SQL :
 
UPDATE my_table SET my_field = REPLACE(my_field, '\\', '') WHERE my_field LIKE "%\\\\%"


Message édité par letto le 03-10-2010 à 10:28:04

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Effacer les backslash dans MySQL

 

Sujets relatifs
[php/mysql]Creation multi tableERREUR au lancement du serveur MYSQL
comment creer une categorie dans mysql?pb d'accent sous PHP / MySQL
[Débutant] Erreur création table (MySQL)"mysql_free_result" quel est son equivalent avec sqlite ?
erreur MySQL 1064PHP - MySql : toutes les occurences du mois / de l'année courante
problème avec MySQL chez infomaniakSauvegarde d'une base de données Mysql de grosse taille
Plus de sujets relatifs à : Effacer les backslash dans MySQL


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)