bonjour,
j'ai un moteur de recherche où l'utilisateur peut entrer des mots via un formulaire de type POST.
J'ai défini ainsi les variables
j'ai ensuite un bout de code pour compter le nombre de mots et les chercher tous
Code : Sélectionner tout - Visualiser dans une fenêtre à part $_SESSION['motsclef'] = addslashes($_POST['motsclef']) ;
ma requête est ensuite de la forme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $motsclef = $_SESSION['motsclef']; // On explose les mots clefs // en tronquant à chaque espace $motsclef1 = explode(" ",$motsclef); // On compte le nombre de mots entrés par le visiteur $nbr_mots = count($motsclef1);
Code : Sélectionner tout - Visualiser dans une fenêtre à part $sql .= "AND (s_nom LIKE '%$motsclef1[0]%' OR specifique LIKE '%$motsclef1[0]%' );"
le problème, c'est que quand je cherche une expression avec un ' (par exemple l'éléphant) j'ai 3 addslashes et non un seul dans ma requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part AND (s_nom LIKE '%l\\\'éléphant%' OR specifique LIKE '%l\\\'éléphant%' );
j'ai essayé addslashes, mysql_real_escape_string et j'ai le même effet.
Autre question.
si certaines variables sont définies grâce à un select, faut-il mettre quand même addslashes ou mysql_real_escape_string avant de les intégrer en BDD ?
Merci pour vos conseils
Partager