Effacer les backslash dans MySQL

Effacer les backslash dans MySQL - SQL/NoSQL - Programmation

Marsh Posté le 09-11-2004 à 15:05:09    

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.

Reply

Marsh Posté le 09-11-2004 à 15:05:09   

Reply

Marsh Posté le 09-11-2004 à 15:06:56    

http://fr.php.net/stripslashes


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 09-11-2004 à 15:09:32    

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

Reply

Marsh Posté le 10-11-2004 à 14:33:39    

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
Reply

Marsh Posté le 10-11-2004 à 15:27:56    

pour ajouter, fonction inverse : addslashes...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-11-2004 à 15:54:59    

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

Reply

Marsh Posté le 10-11-2004 à 15:57:50    

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 -
Reply

Marsh Posté le 10-11-2004 à 16:08:57    

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 ?

Reply

Marsh Posté le 10-11-2004 à 16:28:58    

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 -
Reply

Marsh Posté le 10-11-2004 à 16:47:31    

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 ?

Reply

Marsh Posté le 10-11-2004 à 16:47:31   

Reply

Marsh Posté le 10-11-2004 à 16:49:40    

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 -
Reply

Marsh Posté le 10-11-2004 à 16:52:49    

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

Reply

Marsh Posté le 10-11-2004 à 18:35:50    

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

Reply

Marsh Posté le 14-01-2009 à 14:39:05    

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
Reply

Marsh Posté le 30-06-2010 à 22:09:09    

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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed