尝试实现全文搜索时出现SQL错误

时间:2013-09-05 11:24:48

标签: php mysql sql mysqli

我一直在尝试使用全文搜索来更新我的mysql搜索功能。

这是我的表:

 CREATE TABLE `locations` (
 `loc` text NOT NULL,
  PRIMARY KEY (`l_id`)
 ) ENGINE=MyISAM AUTO_INCREMENT=22222223 DEFAULT CHARSET=latin1;

并查询:

 $sql =
 <<<SQL
 SELECT *,
 FROM locations
 WHERE MATCH(loc) AGAINST($location)
 SQL;

但是我收到了这个错误:

致命错误:未捕获的异常&#39; mysqli_sql_exception&#39;带有消息&#39;您的SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在&#39; FROM位置附近使用WHERE MATCH(loc)AGAINST(x)&#39;在第2行&#39;

我的代码有什么问题?

更新:删除了您建议的逗号,但现在firebug只显示500内部服务器错误。试图将查询更改为旧查询:

$sql = <<<SQL
SELECT *
FROM `locations`
WHERE `loc` LIKE '$location%'
LIMIT 30;
SQL;

脚本适用于此。

4 个答案:

答案 0 :(得分:1)

删除select *后的逗号。

SELECT *
FROM locations
WHERE MATCH(loc) AGAINST('$location')

正如@eggyal所提到的,你必须在查询中引用位置输入。

答案 1 :(得分:1)

在SELECT之后删除逗号。

答案 2 :(得分:0)

又一个基于错字的问题......

在查找错误时,请始终在错误消息中查看之前的引用部分。意味着错误在这里

SELECT *,

答案 3 :(得分:0)

$sql =  
 <<<SQL  
 SELECT *,  
 FROM locations  
 WHERE MATCH(loc) AGAINST($location)  
 SQL;  

应该是

$sql =  
 <<<SQL  
 SELECT *  
 FROM locations  
 WHERE MATCH(loc) AGAINST($location)  
 SQL;

逗号是多余的。