具有多个选项的字段的MySQL数据库查询

时间:2012-01-11 12:58:03

标签: php mysql

在MySQL数据库中,可以将图库中的图像分配到产品系列,以便可以过滤图库以仅显示特定范围内的图像。

目前主图库包含: -

$query_Cur_range_img = "SELECT * FROM `images` WHERE active = 'y' AND gallery = '1' LIMIT ".$showfrom.", ".$max;

如果图库为'1',则图像将显示在主图库(ALL)中。

某些图片也会添加到单独的数据库列'product_range_id'中的产品系列中,产品范围ID为1,2或3。

在过滤图库的包含文件中,我们有: -

 $query_Cur_range_img = "SELECT * FROM `images` WHERE active = 'y' AND gallery = '1' AND product_range_id = '1' LIMIT ".$showfrom.", ".$max;

这仅显示仅分配给product_range_id 1的图像。一些图像将显示在产品范围2和3中,例如或者可能是1和2.我想我们需要包含一个OR语句?我们非常感谢您为此编写查询的任何帮助,如上所述,我认为我们需要AND product_range_id ='1'(或2或3)?

提前致谢。

更新

我已经尝试了以下但是当通过rage id 1过滤图像时所做的一切都是仅显示给范围id 1的显示图像(例如,不包括分配给范围id 1和2的图像)。 / p>

$query_Cur_range_img = "SELECT * FROM `images` WHERE active = 'y' AND gallery = '1' AND (product_range_id = '1' OR product_range_id = '1' AND product_range_id = '2' OR product_range_id = '1' AND product_range_id = '3') LIMIT ".$showfrom.", ".$max;

更新 - 2012年1月13日

现已解决 - 修复如下(感谢Elen)

$query_Cur_range_img = "SELECT * FROM images WHERE active = 'y' AND gallery = 1 AND (FIND_IN_SET('1', product_range_id) OR product_range_id = '1') LIMIT ".$showfrom.", ".$max;

$query_Cur_range_img = "SELECT * FROM images WHERE active = 'y' AND gallery = 1 AND (FIND_IN_SET('2', product_range_id) OR product_range_id = '2') LIMIT ".$showfrom.", ".$max;

$query_Cur_range_img = "SELECT * FROM images WHERE active = 'y' AND gallery = 1 AND (FIND_IN_SET('3', product_range_id) OR product_range_id = '3') LIMIT ".$showfrom.", ".$max;

根据要求...

2 个答案:

答案 0 :(得分:2)

这还不错吗?

SELECT * FROM `images` WHERE active = 'y' AND gallery = '1' AND (product_range_id = '1' OR product_range_id = '2' OR product_range_id = '3') LIMIT ".$showfrom.", ".$max.";

修改

$query_Cur_range_img = "SELECT * FROM images WHERE active = 'y' AND gallery = 1 AND 
(FIND_IN_SET('1', product_range_id) OR product_range_id = '1') LIMIT ".$showfrom.", ".$max;

答案 1 :(得分:2)

试试这个:

$query_Cur_range_img = "SELECT * FROM `images` 
WHERE active = 'y' 
AND gallery = '1' 
AND product_range_id IN ('1', '2', '3') 
LIMIT ".$showfrom.", ".$max;

希望它会有所帮助,

PS 如果您使用php获取product_range_id,那么PLZ永远不会忘记使用mysql_real_escape_string()