Effacer les backslash dans MySQL - SQL/NoSQL - Programmation
Marsh Posté le 09-11-2004 à 15:06:56
ReplyMarsh 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
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.
Marsh Posté le 10-11-2004 à 15:27:56
pour ajouter, fonction inverse : addslashes...
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
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...
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...
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 ?
Marsh Posté le 10-11-2004 à 16:28:58
Euh oui mais non, on fait pas comme ça normalement...
On ne vire les antislashes en trop qu'à l'affichage...
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 ?
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...
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
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.
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 ?
Marsh Posté le 30-06-2010 à 22:09:09
En SQL :
UPDATE my_table SET my_field = REPLACE(my_field, '\\', '') WHERE my_field LIKE "%\\\\%"
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.