Problème bizarre avec l'instruction LIKE

Problème bizarre avec l'instruction LIKE - SQL/NoSQL - Programmation

Marsh Posté le 18-06-2008 à 16:33:06    

Bonjour,
Voici mon problème: je désire permettre aux utilisateurs de faire une recherche par terme dans mon appli.
J'ai donc une requête du genre:SELECT...FROM..WHERE test LIKE %monterme%
Quand j'affiche la requête que j'exécute après la recherche du mot: "acronym" voilà la requête:

Code :
  1. SELECT distinct query_id, Query_text, .... FROM Projects P inner join Queries Q on (P.Project_name=Q.Project_name) WHERE (P.Password='wwwww') and (Query_status=1 or Query_status=2 or Query_status=3 or Query_status=4 or Query_status=5 or Query_status=6 or Query_status=7) and (Query_text LIKE '¬ronym%' OR Doc_name LIKE '¬ronym%' OR Proposal LIKE '¬ronym%' OR Reference LIKE '¬ronym%' OR answer_text LIKE '¬ronym%' OR answer_comment LIKE '¬ronym%') order by Creation_date ASC


J'ai fais quelques tests et j'observe que ça marche à chaque fois sauf quand je cherche la chaîne "ac" ou une mot qui contient cette chaîne.
"ac" (ou plus exactement %ac) est remplacé par "¬". Je n'ai rien trouvé sur le net à ce propos, ça me partait vraiment être une erreur bête mais j'ai pas d'idée.
Un grand merci d'avance!

Reply

Marsh Posté le 18-06-2008 à 16:33:06   

Reply

Marsh Posté le 18-06-2008 à 16:36:11    

tu la construis comment la requête?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 18-06-2008 à 17:02:52    

Je récupère le mot entré dans un textbox par un post. Et ensuite j'écris la requête avec.
Je suis désolée, je ne sais pas trop ce que tu attends comme réponse...  
Parcontre j'ai écris "quand je cherche la chaîne "ac" ou une mot qui contient cette chaîne" mais en fait c'est juste quand je cherche "ac" ou quand la chaîne commence par "ac".
Je continue à faire des test et par exemple qd je cherche "bbbbbbbbac", il supprime les 2 premières lettres et voilà ce qu'il cherche: "... LIKE '»bbbbbbac%'".
Bon je comprends rien à ce qu'il se passe...

Reply

Marsh Posté le 18-06-2008 à 17:09:11    

poste le code dans lequel tu construis ta requete stp


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 18-06-2008 à 17:11:25    

ça pue l'urlencode ou des trucs dans le genre...:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 18-06-2008 à 17:31:14    

Code :
  1. if(isset($_POST['search_label']))     $search_label=$_POST['search_label'];
  2.          $search_query = "SELECT distinct query_id, Query_text, Translator_name, language_name, Replied, Query_type, Doc_name, Reference, Proposal,Query_status, Creation_date, answer_text, answer_comment FROM Queries WHERE (Query_text LIKE '%$search_label%' OR Doc_name LIKE '%$search_label%' OR Proposal LIKE '%$search_label%' OR Reference LIKE '%$search_label%' OR answer_text LIKE '%$search_label%' OR answer_comment LIKE '%$search_label%') AND (Project_name='$project_name') order by Creation_date DESC";
  3.          $search= mysql_query($search_query);


Reply

Marsh Posté le 18-06-2008 à 17:37:50    

Bravo, tu viens de gagner le droit d'aller lire de la doc sur les injections SQL.


Message édité par skeye le 18-06-2008 à 17:38:03

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 18-06-2008 à 17:38:35    

+1, une vraie passoire son truc


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 18-06-2008 à 17:39:24    

Bon sinon au niveau des conseils vous pouvez m'aider ou pas?

Reply

Marsh Posté le 18-06-2008 à 17:42:46    

oui, je te conseille d'aller te documenter sur les injections SQL, et comment les éviter.

 

(et au passage regarde la requête dans le code HTML, pas ce qu'affiche le browser)


Message édité par skeye le 18-06-2008 à 17:43:45

---------------
Can't buy what I want because it's free -
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed