我有一个包含电影的数据库,每个电影帖category
字段都是这样写的:8, 12, 16
。这意味着,该电影是动作和戏剧等。这就是我正在做的事情:
$fields = "id, xfields, category";
$query = $db->prepare("SELECT $fields FROM `dle_post` WHERE `category` IN ($subcatsStr) ORDER BY `date` DESC LIMIT :from, :to");
$query->bindParam(":from", $from);
$query->bindParam(":to", $count);
$query->execute();
所以现在我想要获得所有电影,即动作片(类别ID:8)。 subcatsStr
看起来像这样:
$subcatsStr = "8";
查询只查找category
以8开头的电影,例如电影,category
是8,12,47,53
或8,11,12,17,53
。但是当category
例如12,8
时,却找不到它。我怎样才能让它按照我的意愿工作?
修改
我注意到find_in_set
仅在subcatsStr
为单个数字时起作用,例如8
,但它不是,例如8, 12, 16, 19
。当用户选择最高类别(例如电影)时,subcatsStr
包含许多值,即类别和子类别。解决方案?
答案 0 :(得分:3)
SELECT * FROM dle_post
WHERE find_in_set('$subcatsStr', category) > 0
但实际上改变你的桌面设计会更好。永远不要在一列中存储多个值!