Problème SQL/PHP

Résolu
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 ?
Configuration: WinDOBE Vista

12 réponses

  1. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    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());
    1
  2. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    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()); 
    1
  3. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
     
    re :)

    as tu essayé en ajoutant un rawurlencode et rawurldecode ?
    1
  4. Autumn`Tears Messages postés 1247 Statut Membre 145
     
    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 !
    1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Échappe le ' par un anti-slashe comme ceci : \'
    Si c'est une variable qui contient cet apostrophe, utilise addslashes.
    0
  7. Yoan Messages postés 11905 Statut Modérateur 2 356
     
    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 ...
    0
  8. Autumn`Tears Messages postés 1247 Statut Membre 145
     
    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.
    0
    1. Yoan Messages postés 11905 Statut Modérateur 2 356
       
      $req=mysql_query("DELETE FROM Carte WHERE Nom='".mysql_real_escape_string($_SESSION['selection3'])."'") or die("Erreur".mysql_error()); 
      0
  9. Autumn`Tears Messages postés 1247 Statut Membre 145
     
    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...
    0
  10. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
     
    bonjour :)

    sinon, essai ca :

    $req=mysql_query("DELETE FROM Carte WHERE Nom=`".$_SESSION['selection3'])."`") or die("Erreur".mysql_error());
    0
  11. Autumn`Tears Messages postés 1247 Statut Membre 145
     
    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.
    0
  12. Autumn`Tears Messages postés 1247 Statut Membre 145
     
    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
    0
  13. Autumn`Tears Messages postés 1247 Statut Membre 145
     
    Eh non je connais pas cette fonction :S
    Je vais essayer ça de suite
    0