Синтаксическая ошибка SQL ZF1

Я получаю сообщение об ошибке, но я не могу найти ее сам.
Может быть, кто-то из вас, ребята, знает решение.

Мой запрос:

return $db->fetchAll("SELECT DISTINCT *,
MATCH(k.naam, k.plaats)
AGAINST('{$newQ}'
IN BOOLEAN MODE)
as score
FROM klant k
WHERE MATCH(k.naam, k.plaats)
AGAINST('{$newQ}' IN BOOLEAN MODE)
OR code = '{$q}'
AND bedrijf_id = '{$bedrijf}'
ORDER BY score DESC LIMIT " . intval($limit));

И моя ошибка:

Message: SQLSTATE[42000]:
Syntax error or access violation: 1064 syntax error,
unexpected $end, expecting FTS_TERM or FTS_NUMB or '*',
query was: SELECT DISTINCT *, MATCH(k.naam, k.plaats) AGAINST('*' IN BOOLEAN MODE) as score FROM klant k WHERE MATCH(k.naam, k.plaats) AGAINST('*' IN BOOLEAN MODE) OR code = '' AND bedrijf_id = '1' ORDER BY score DESC LIMIT 3

Запрос выглядит для меня абсолютно нормально, может кто-нибудь указать мне, куда я должен смотреть?

4

Решение

match возвращает двойное значение, а не логическое значение — в вашем where пункт:

return $db->fetchAll("SELECT DISTINCT *,
MATCH(k.naam, k.plaats)
AGAINST('{$newQ}'
IN BOOLEAN MODE)
as score
FROM klant k
WHERE MATCH(k.naam, k.plaats)
AGAINST('{$newQ}' IN BOOLEAN MODE)
HAVING relevance > 0 -- Missing from the OP
OR code = '{$q}'
AND bedrijf_id = '{$bedrijf}'
ORDER BY score DESC LIMIT " . intval($limit));
1

Другие решения

Я столкнулся с той же проблемой сегодня. Я обнаружил, что причиной является формат параметров MATCH (). Следовательно, в вашем случае причиной ошибки является значение, которое вы передаете {$ NewQ}.

Чтобы узнать синтаксис для MATCH (), проверьте:

http://dev.mysql.com/doc/refman/5.6/en/fulltext-boolean.html

2

По вопросам рекламы [email protected]