Задать вопрос
@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"];


результат не возвращается. Помогите найти в чем проблема
  • Вопрос задан
  • 2262 просмотра
Подписаться 2 Оценить 4 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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).
Ответ написан
Ваш ответ на вопрос

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

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