2015-10-09 88 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