2012-04-09 13 views
1

Ich habe eine Suchfunktion, aber in der Lage sein, Suche von nichts zulassen, stattdessen einfach durch Kategorien von Elementen auflisten. Ziemlich normales Zeug.mysql Spiel gegen Wildcard

Wenn also ein Benutzer keinen Suchbegriff eingibt und einfach eine Kategorie auswählt, möchte ich, dass meine Suche alles mit z. "cat_id = 1"

Ich versuche das folgende und ich habe ein paar verschiedene Methoden ausprobiert, aber keine Freude und möchte nicht wirklich auf verschiedene Abfragen für verschiedene Siutuations zurückgreifen, wenn ich es helfen kann.

Die Tabelle I auf der Suche bin ein Volltext-Index auf der Spalte hat „Titel“ genannt, und ich versuche:

select col_name from tablename where (MATCH(title) AGAINST ('*' IN BOOLEAN MODE)) 

aber gar keine Ergebnisse erhalten, wird dieser Platzhalter erlaubt?

Antwort

1

Verwendung * wird nicht helfen. Siehe Verwendung von MySQL-Site:

MATCH() nimmt eine durch Kommas getrennte Liste, die die zu durchsuchenden Spalten benennt. AGAINST sucht nach einer Zeichenfolge und einem optionalen Modifikator, der angibt, welche Art von Suche ausgeführt werden soll. Die Suchzeichenfolge muss eine literale Zeichenfolge, keine Variable oder ein Spaltenname sein.

Wenn der Benutzer keine Suchbegriffe eingibt, sollten Sie diese WHERE-Bedingung nicht einfach weglassen?

+0

Ja, ich weiß, dass ich das kann, ich mag einfach nicht jede Menge "Wenn" -Aussagen überall, wenn ich ihr helfen kann. Danke für die Antwort. –