@uranus235

Зачем запрос mysql возвращает ноль строк?

Имеется таблица:

CREATE TABLE `chat` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `message` varchar(200) default NULL,
  `answer` varchar(200) default NULL,
  PRIMARY KEY  (`id`),
  FULLTEXT KEY `title` (`message`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

INSERT INTO `chat` VALUES (1, 'hi', 'privet');


При запросе

$get = mysql_fetch_row(mysql_query("SELECT answer FROM chat WHERE MATCH(message) AGAINST('hi')"));
$answer = $get["answer"];


результат не возвращается. Помогите найти в чем проблема
  • Вопрос задан
  • 2261 просмотр
Решения вопроса 1
@Lol4t0
Возможно, ошибка в самом sql запросе. На тестовых данных результат запроса действительно пустой, потому что hi не матчится со строкой из базы данных.
Тому есть две причины:
1) Слово `hi` встречается более, чем в половине записей в таблице (для таблицы из одной строки это верно). Тогда hi попадает в список стоп-слов, и поиск по ним не производится. Такое поведение можно обойти, включив boolean mode
2) Слово `hi` слишком короткое, и tokenizer выкидывает его из рассмотрения при создании индекса для строки. Для более длинных слов запрос работает нормально: sqlfiddle.com/#!2/5bd24/8
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
php.net/manual/ru/function.mysql-query.php - читаем сразу после заголовка. DEPRECATED!

И да, 0 это не 0 а false. Нужно посмотреть в чем была ошибка (функция mysql_error).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы