#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, однако добавление начального пробела перед ключевым словом устранило проблему.