2010-12-14 8 views
2

Was ich brauche, scheint einfach, aber ich konnte es bisher nicht schaffen. Vielleicht sind es nur diese späten Stunden, oder vielleicht ist es nicht so einfach, ich weiß nicht mehr :) Also, hier ist die Sache. Ich möchte in der Lage sein zu überprüfen, ob die Suchzeichenfolge von meiner Website enthält alle Felder aus einer bestimmten Spalte in meiner Datenbank. So wäre es das Gegenteil der üblichen sein:mysql string in einem Suchbegriff enthalten

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

, die für die Felder mit Werten sucht, wo die Suchbegriff ist enthalten.
Was wäre der einfachste Weg, einige reguläre Ausdrücke zu verwenden oder ...?

Vielen Dank!

Antwort

3

tun Sie es einfach in die andere Richtung um

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

Bär mit mir für die richtige Syntax für die Variable für SQL-Injektion zu entkommen.

+0

hmm, das macht Sinn, aber es hat nicht funktioniert für mich ... keine Fehler, nur nicht die richtigen Filter aus. – Spaceploit

+0

@spaceploitator: Hum .. müsste Tabellendefinition, einige Einträge und erwartete Ergebnisse dann zeigen. – Danosaure

+0

Der Spaltenfeldtyp ist varchar in latin1_swedish_ci, wobei alle Einträge tatsächlich 5-stellige Zahlen sind. also würde ich gerne einen '12345' Eintrag suchen, wenn ich nach '123456' suche. – Spaceploit

0

Ihre Abfrage ist auch gut, wie Sie wollen. aber immer noch können Sie dies versuchen.

Sie können Ihre Zeichenfolge mithilfe von MATCH() AGAINST() Anweisung in Mysql suchen.

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


Here your field must be having Fulltext datatype. 

Dies kann gut funktionieren.

Danke.

+0

Hallo Chandresh, ja, ich war vertraut mit Match gegen, aber es wird nicht für mich Cos des Datentyps. Danke trotzdem! – Spaceploit