2010-12-14 47 views
2

Ce dont j'ai besoin semble simple, mais je n'ai pas réussi à le faire jusqu'ici. Peut-être que c'est juste ces heures tardives, ou peut-être que ce n'est pas si simple après tout, je ne sais plus :) Alors, voici la chose. Je veux être en mesure de vérifier si le chaîne de recherche de mon site contient l'un des champs d'une colonne particulière dans ma base de données. Donc, ce serait le contraire de l'habituel:Chaîne mysql contenue dans une chaîne de recherche

mysql_query(" 
SELECT * 
FROM `table` 
WHERE `column` LIKE '%{$search}%' 
"); 

qui recherche les champs avec des valeurs où la chaîne de recherche est contenu.
Quel serait le moyen le plus simple, en utilisant des expressions régulières ou ...?

Merci beaucoup!

Répondre

3

suffit de le faire dans l'autre sens

SELECT * 
FROM `table` 
WHERE '{$search}' LIKE concat('%', `column`, '%')

ours avec moi pour la syntaxe appropriée pour la variable pour échapper à l'injection SQL.

+0

hmm, cela a du sens, mais cela n'a pas fonctionné pour moi ... pas d'erreurs, juste n'a pas filtré les bons. – Spaceploit

+0

@spaceploitator: Hum .. aurait besoin de montrer la définition de la table, quelques entrées et les résultats attendus alors. – Danosaure

+0

le type de champ de colonne est varchar dans latin1_swedish_ci, toutes les entrées étant en réalité des nombres à 5 chiffres. donc je voudrais faire correspondre une entrée '12345' si je recherche '123456'. – Spaceploit

0

votre requête est aussi bonne que vous le souhaitez. mais encore vous pouvez essayer cela.

Vous pouvez rechercher votre chaîne à l'aide de l'instruction MATCH() AGAINST() dans mysql.

mysql_query("SELECT * FROM table_name WHERE MATCH(field11,field12) AGAINST ('searchstring')"); 


Here your field must be having Fulltext datatype. 

Cela peut fonctionner bien.

Merci.

+0

salut chandresh, oui, j'étais familier avec le match contre, mais cela ne fonctionnera pas pour moi du type de données. Merci quand même! – Spaceploit