2009-03-25 3 views
1

Ich versuche derzeit eine Suche über 2 Felder in meiner MySQL-Tabelle (Texttyp) mit PHP durchzuführen.Volltextsuche in MySQL und PHP funktioniert nicht

SELECT * FROM content_items WHERE MATCH (content,name) AGAINST ('".urldecode($_REQUEST['term'])."' IN BOOLEAN MODE) 

Ich bin immer Null Ergebnisse zu erzielen, egal, was ich suche (sogar versucht, die Abfrage statisch zu machen und es immer noch nicht funktioniert). Ich habe Volltextindizes für beide Felder.

Was kann das verursachen?

Danke,

Roy

P. S

Die Suche beliebig langen Stachel (auch Kurze)

+0

Wie viele Zeilen gibt es in der Tabelle? –

Antwort

1

Es war ein Problem mit dem Indizes. Der Wiederaufbau hat das gelöst.

3

Die SQL-Anweisung macht Sinn passen sollte. Ich denke, das Problem liegt hier:

urldecode($_REQUEST['term']) 

Es gibt eine Notiz in der PHP Manual bezüglich dieser

Warnung

superglobals $ _GET und _REQUEST $ sind bereits dekodiert. Die Verwendung von urldecode() für ein Element in $ _GET oder $ _REQUEST könnte unerwartete und gefährliche Ergebnisse haben.

Cheers,

Mark

+0

In diesem Sinne wäre es ratsam, etwas über entweichende Eingaben zu erfahren. ;-) – Till

2

(unter der Annahme Ihrer Anfrage ist ein Fehler nicht werfen)

Vielleicht möchten Sie die mysql configs in Bezug auf die Volltextsuche überprüfen. Zum Beispiel durch Standardbedingungen unter 4 Zeichen werden nichts passende

mysql> show variables like 'ft_%'; 
+--------------------------+----------------+ 
| Variable_name   | Value   | 
+--------------------------+----------------+ 
| ft_boolean_syntax  | + -><()~*:""&| | 
| ft_max_word_len   | 84    | 
| ft_min_word_len   | 4    | 
| ft_query_expansion_limit | 20    | 
| ft_stopword_file   | (built-in)  | 
+--------------------------+----------------+ 
5 rows in set (0.00 sec) 
+0

+1 Du hast gerade meinen Arsch gerettet – Draemon