2010-11-22 24 views
2

im en utilisant une requête simple pour ma recherche:mysql COMME = recherche imprécise

SELECT * FROM table WHERE field LIKE '%term%' 

si j'ai un champ = « Nom de la société 123 » et je recherche pour la société 123 le résultat est nul

comment puis-je améliorer cela? il trouve que si le terme est en séquence

+0

Vous devriez lire la recherche en texte intégral dans mysql http://dev.mysql.com/doc/refman/5.1/fr/fulltext-search.html –

Répondre

1

Vous devez mettre un% entre l'entreprise et 123 pour qu'il rencontre. Vous pourriez vouloir vérifier les fonctions de recherche en texte intégral.

2

Remplacer les espaces avec%

$newTerm = str_replace(' ', '%', $term); 
$sql = "SELECT * FROM table WHERE field LIKE '%$term%'" 

$r = mysql_qery($sql, $conn); 
+0

pas le problème ici, vous devriez lire la question d'abord (mais vous êtes r le code dans la question ne fonctionnera pas, mais je suis sûr que c'est juste une faute de frappe). ** EDIT: ** brain_damage a corrigé le code dans la question – oezi

+0

il a édité la question depuis que j'ai posté la première fois, je l'ai changé –

+0

Je préférerais un 'concat ('%', $ term, '%')' (vérifiez quelle syntaxe PHP serait ici) pour être sûr de ne pas souffrir de l'injection SQL. – Danosaure

0

essayer de remplacer les espaces
$searchtext =str_replace(' ','%',$searchtext);

0

vous pouvez:

  • diviser votre searchterm en mots et construire une requête avec beaucoup de ANDs (ou ORs si vous voulez juste trouver l'une des parties) hors de celui-ci (laid, mais je avons vu ceci beaucoup de fois)
  • remplacer ' « (espace) avec% (thats un caractère générique) dans votre terme (la voie à suivre)