当类别包含多个类别时,按类别查询帖子?

时间:2014-08-11 20:43:17

标签: php mysql sql categories

我有一个包含电影的数据库,每个电影帖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开头的电影,例如电影,category8,12,47,538,11,12,17,53。但是当category例如12,8时,却找不到它。我怎样才能让它按照我的意愿工作?

修改 我注意到find_in_set仅在subcatsStr为单个数字时起作用,例如8,但它不是,例如8, 12, 16, 19。当用户选择最高类别(例如电影)时,subcatsStr包含许多值,即类别和子类别。解决方案?

1 个答案:

答案 0 :(得分:3)

使用FIND_IN_SET()

SELECT * FROM dle_post 
WHERE find_in_set('$subcatsStr', category) > 0

但实际上改变你的桌面设计会更好。永远不要在一列中存储多个值!