我一直在尝试使用全文搜索来更新我的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;
脚本适用于此。
答案 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;
逗号是多余的。