Problème SQL/PHP
Résolu
Autumn`Tears
Messages postés
1247
Statut
Membre
-
Autumn`Tears Messages postés 1247 Statut Membre -
Autumn`Tears Messages postés 1247 Statut Membre -
Bonjour,
J'ai un script PHP qui me permet de supprimer un élément dans ma base de donnée. Il fonctionne très bien, sauf pour supprimer un élément contenant le caractère '. Y-a-t-il une solution pour résoudre ce problème ? Merci !
--
Have You Ever Seen The Rain ?
J'ai un script PHP qui me permet de supprimer un élément dans ma base de donnée. Il fonctionne très bien, sauf pour supprimer un élément contenant le caractère '. Y-a-t-il une solution pour résoudre ce problème ? Merci !
--
Have You Ever Seen The Rain ?
Configuration: WinDOBE Vista
12 réponses
-
Tu peux soit échapper les caractères avec addslashes ou bien mettreta chaine entre deux `.
Exemples :$req=mysql_query('DELETE FROM Carte WHERE Nom=`'.$_SESSION['selection3'].'`') or die('Erreur'.mysql_error());Ou$req=mysql_query('DELETE FROM Carte WHERE Nom="'.addslashes($_SESSION['selection3']).'"') or die('Erreur'.mysql_error()); -
C'est que la deuxième fonctionne mais dans ta base de données, tu n'as pas utiliser la fonction addslashes alors tu as ça dans ta base de données :
Coucou, je m'casse
Et tu cherche à supprimer :Coucou, je m\'casse
Essaye avec ça :$req=mysql_query("DELETE FROM Carte WHERE Nom=`".$_SESSION['selection3']."`") or die('Erreur'.mysql_error()); -
re :)
as tu essayé en ajoutant un rawurlencode et rawurldecode ? -
J'ai réussi à contourner ce maudit problème finalement.
Le problème venait de la valeur retournée par mon $_POST qui ne renvoyait à la base que autumn et non autumn'tears.
Dire que la solution était juste là...
Enfin, merci tout de même pour votre aide, ça m'a permis d'apprendre de nouvelles fonctions ! -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Échappe le ' par un anti-slashe comme ceci : \'
Si c'est une variable qui contient cet apostrophe, utilise addslashes. -
Sans aucun code c'est difficile à être explicite mais à priori tu devrais regarder du côté des caractères d'échappement, soit de PHP, soit de ton SGBD, soit des deux.
l'anti-slash en PHP, le simple quote pour PgSQL....
Sachant que, bien entendu, il existe des fonctions qui sont capables d'échapper les méta-caractères d'une chaîne. Encore faut-il chercher et trouver la bonne, chaque langage a les siens ... -
Bon, je poste la partie de code qui gère la suppression :
$req=mysql_query("DELETE FROM Carte WHERE Nom='".$_SESSION['selection3']."'") or die("Erreur".mysql_error());
Sachant que dans la base, le champ Nom est la clé primaire.
Le problème se fait au niveau de mon $_SESSION['selection3'] qui ne fonctionne pas si je veux supprimer l'élément autumn'tears, par exemple. -
J'ai testé dans un echo, il ne renvoie que la valeur de autumn. Même résultat avec addashes.
Je suis à court d'idée... -
bonjour :)
sinon, essai ca :
$req=mysql_query("DELETE FROM Carte WHERE Nom=`".$_SESSION['selection3'])."`") or die("Erreur".mysql_error()); -
Bonjour,
Ni l'une ni l'autre des solutions ne fonctionnent, je viens de les tester. Pour la première elle me renvoie une erreur, et la seconde ne me renvoie pourtant aucune erreur. -
En fait, le problème reste toujours le même, si je veux supprimer autumn'tears, il ne m'affiche plus qu'autumn, même avec un addslashes quand je fais un echo. Donc il envoie une valeur inexistante à ma base et la requête ne peut pas fonctionner
-
Eh non je connais pas cette fonction :S
Je vais essayer ça de suite