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


Query posts by category, when category contains multiple 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开头,例如movie,其中category8,12,47,538,11,12,17,53。但是当category是例如12,8时,它找不到它。我怎样才能使它如我所愿?

编辑:

我注意到find_in_set仅当subcatsStr是单个数字时有效,例如8,但它没有,当它是8, 12, 16, 19时。当用户选择顶级类别(例如:movies), subcatsStr包含许多值,这些值是类别和子类别。解决方案呢?

Use FIND_IN_SET()

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

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