2015-10-09 128 views
-1

我正在試圖創建一個查詢,其中整個表中搜索一個字符串,在這種情況下,任何字符串。查詢應該返回滿足所有條件的行。數據庫引擎是InnoDB。 $keywordse是一個包含文字字符串的數組。 這是我的代碼:字符串搜索表

SELECT id, autorid, autor, date, longitude, latitude, title, text, town, time 
FROM posts 
WHERE MATCH (title, text, town) AGAINST (" . implode(",",$keywordse) . ") 
AND 
(
    longitude >= $loo and longitude <= $lo 

OR 
    latitude >= $laa and latitude <= $la 
) 
ORDER BY id DESC 
+0

錯誤地搜索是相當明確的 - 未定義的變量。從您共享的代碼中,不可能確定如何/何時/如何定義它。 –

+0

是的你是對的,我改變了這一點,現在只顯示查詢的結果是undefinded。 – Bodoppels

+0

「*我想創建一個查詢*」 - 你在哪裏構造這個查詢?你的'WHERE'子句包含'... title,text,town LIKE ...';這甚至有效嗎? –

回答

0

我有點被這條線迷糊中查詢

WHERE * LIKE (" . implode(",",$keywordse) . ") 

我懷疑你可以使用操作符*在這裏。嘗試將其替換爲您嘗試查找字符串的字段。像你的案例中的作者,文字或標題。

已更新: MySQL中有FULLTEXT索引。 https://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

上的字段到表中加入這樣的索引後,您可以在多個領域與

WHERE MATCH (title,autor,text) AGAINST ('keyword'); 
+0

我想在每列中搜索一個字符串,並認爲*意味着SQL「全部」。 – Bodoppels

+0

不,它不。 MySQL不支持它。您需要列出查詢中的每個字段。 –

+0

噢,我試試! :) – Bodoppels