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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$_SESSION['motsclef'] = addslashes($_POST['motsclef']) ;
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
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);
ma requête est ensuite de la forme
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