Полнотекстовый поиск SQL - неизвестный столбец «test» в «предложении where» - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь выполнить полнотекстовый поиск в системе 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, поскольку этот ответ предполагает полнотекстовый запрос в joomla

1 Ответ

0 голосов
/ 04 октября 2018

Вы должны удалить backtick из вашего запроса.

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 использует backtick для имени столбца, но test вот текст, который выхочу искать.

Поскольку вы используете Joomla, поэтому в Joomla вместо $db->quoteName вы должны использовать $db->quote.quoteName используется для экранирования имени столбца, а quote для значений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...