SQL 全文搜索 - 'where clause' 中的未知列 'test'

SQL fulltext search - Unknown column 'test' in 'where clause'

我正在尝试使用以下查询在 Joomla 系统中进行全文搜索:

SELECT `id`,`user_id`,`article_id`,`body`,`created_time`
FROM `#__user_notes`
WHERE (`user_id` = '660' AND `article_id` IN (23, 24) AND `id` < '385') 
OR (MATCH (body) AGAINST (`test`) AND `id` < '385' AND `user_id` = '660')
ORDER BY id DESC LIMIT 10

抛出此错误:

JDatabaseExceptionExecuting: Unknown column 'test' in 'where clause'

没有全文搜索行也能正常工作:

OR (MATCH (body) AGAINST (`test`) AND `id` < '385' AND `user_id` = '660')

我已将 ENGINE 设置为 MYISAM,因为此答案建议 fulltext query in joomla

您应该从查询中删除反引号。

OR (MATCH (body) AGAINST (`test`) AND `id` < '385' AND `user_id` = '660')

以上应替换为

OR (MATCH (body) AGAINST ('test') AND `id` < '385' AND `user_id` = '660')

Mysql 对列名称使用反引号,但 test 这是您要搜索的文本。

因为您使用的是 Joomla,所以在 Joomla 中,您应该使用 $db->quote 而不是 $db->quoteNamequoteName 用于转义列名,quote 用于值