2010-12-21 60 views
1

語法正在殺死我!接下來的查詢有問題:在MySQL查詢和全文中的Concat()

$cadbusca="SELECT * , MATCH (nombre, apellido, email, about, place, CONCAT(nombre,' ',apellido)) AGAINST ('$busqueda') AS Score FROM user WHERE MATCH (nombre, apellido, email, about, place, CONCAT(nombre,' ',apellido)) AGAINST ('$busqueda') ORDER BY Score DESC"; 

錯誤:

Query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(nombre,' ',apellido)) AGAINST ('dan stern') AS Score FROM user WHERE MATCH (nom' at line 1.

「丹嚴厲」是詞搜索...

+0

我真的不能告訴什麼,但我認爲這是在u使用比賽和反對,因此 – Tebo 2010-12-21 21:40:22

回答

2

要執行使用MATCH/AGAINST一個全文搜索,必須在要搜索的字段上有全文索引。見match/against doc

話雖如此,你正試圖在你的MATCH中包含一個動態實體CONCAT(nombre,' ',apellido),這是不允許的 - 你不能在這樣的動態字段上有索引。

Full-Text Restrictions doc

The MATCH() column list must match exactly the column list in some FULLTEXT index definition for the table, unless this MATCH() is IN BOOLEAN MODE. Boolean-mode searches can be done on nonindexed columns, although they are likely to be slow.

+0

來連接兩個colums只有這樣的辦法就是讓一個布爾modea搜索? – 2010-12-21 22:00:16

+0

不 - 你顯然甚至不能這麼做。賈斯汀建議創建一個你想要的連接的列是一個好方法,如果可以的話。或者,您是否考慮過僅使用帶有通配符的LIKE運算符? - http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html#operator_like – Riedsio 2010-12-21 22:05:25