Запрос полнотекстового поиска не работает в CodeIgniter - PullRequest
1 голос
/ 03 февраля 2012

Я пытаюсь запустить поиск по полнотекстовому индексу в CodeIgniter.

Моя функция поиска выглядит так:

public function get_searchresult_count($searchresult)
{
    $today_date = date('Y-m-d');
    $db_photos = $this->load->database('photos', TRUE);
    $db_photos->select('*');
    $db_photos->from('photos');
    $db_photos->where('MATCH (`title`, `description`) AGAINST ("'.$searchresult.'")', NULL);
    $db_photos->where('approved', '1');
    return $db_photos->count_all_results();
}

Мне нужно, чтобы возвращение было count_all_results, потому что оно требуетчтобы получить номер для нумерации результатов.

Я не могу заставить его работать, я получаю эту ошибку:

Номер ошибки: 1064

У вас есть ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'AGAINST ("lime") И approved =' 1 '' в строке 3

SELECT COUNT (*) AS numrows ОТ (photos) ГДЕ MATCH (title, description) ПРОТИВ («лайм») И approved = '1'

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 04 февраля 2012

Вам необходимо установить третий параметр функции where() в значение false, чтобы предотвратить автоматический экранирование ваших параметров. В противном случае кавычки в предложении соответствия экранируются и создают неверный запрос.

Взято дословно со страницы руководства AR

$ this-> db-> where () принимает необязательный третий параметр. Если вы установите значение> FALSE, CodeIgniter не будет пытаться защитить имена ваших полей или таблиц обратными чертами.

$this->db->where('MATCH (field) AGAINST ("value")', NULL, FALSE);

http://codeigniter.com/user_guide/database/active_record.html

0 голосов
/ 04 февраля 2012

Вам нужно запустить запрос выбора и вернуть результат.После предложения 'where' попробуйте добавить:

$query = $db_photos->get();
return $query->count_all_results();

Надеюсь, это поможет.

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