MySQL FIND_IN_SET возвращает пустой

#php #mysql

#php #mysql

Вопрос:

У меня есть запрос, в котором я пытаюсь найти соответствующий тег из значения, разделенного запятой, в таблице БД, значение в базе данных может выглядеть следующим образом:

 "Tags":"all, kids, family, cqr, october"
  

и мой запрос прямо сейчас выглядит так:

 $rows = $db -> select("
    SELECT `FriendlyId`,`Name`,`Description`,`Tags`,`BeginDate`,`EndDate` 
    FROM  `Pages` 
    WHERE `SiteId` =  '569e435701395' 
    AND `IsActive` =  '1' 
    AND `BeginDate` IS NOT NULL 
    AND FIND_IN_SET('kids', Tags)
    ORDER BY  `BeginDate` ASC");
  

К сожалению, это возвращает пустой результат, хотя я знаю, что в базе данных есть строки, соответствующие запросу. Это мой первый раз, когда я использую FIND_IN_SET so, я делаю что-то не так?

Комментарии:

1. где ваше where ключевое слово?

2. упс, когда я не вернулся достаточно далеко назад, отмена исправлена.

3. Значение рассматривается как ' kids' с начальным пробелом, вам нужно будет с этим разобраться. Я сомневаюсь, что он когда-нибудь найдет 'all' — Вам нужно использовать другой подход или исправить базу данных, чтобы она не нарушала основное правило использования текстовых данных с разделителями.

4. @ravisachaniya: да, вы видели это после редактирования

5. @AlexK. мои возможности ограничены с точки зрения «исправления базы данных», поскольку она привязана к CMS, однако добавление начального пробела перед ключевым словом устранило проблему.